Salut à tous,

je réalise actuellement quelques petites choses en SVG et je fait quelques éléments d'interactivité via ECMAScript.
Je procède comme suit :


<script type="text/ecmascript">
<![CDATA[
//mon code Ecma
]]>
</script>

Ca fonctionne, je souhaiterais maintenant utiliser un fichier externe, logique, comme on le fait pour le HTML et le JavaScript...

Bon, j'y vais :


<script type="text/ecmascript" src="test.es"></script>

Je la tente naïvement comme ça, ça ne fonctionne pas Smiley ohwell

Hop, allons-y direct comme ceci :

<script type="text/javascript" src="test.js"></script>


Rien de mieux Smiley ohwell
Bon, d'une part mon code est du ECMAScript et pas du JavaScript, donc, je ne veux pas utiliser text/javascript Smiley smile et d'autre part, je ne comprend pas pourquoi l'inclusion d'un fichier externe echoue :s

L'extension pour les fichiers ecmascript est-elle bien *.es comme je l'ai pensé, encore une fois, très naïvement ?
La méthode d'inclusion est-elle correcte ? (apparement non !)
Est-ce possible ? (j'imagine que oui quand même, ça serait le comble sinon !)

Voilà en gros Smiley smile , merci à vous
Modifié par Olivier (28 Feb 2006 - 13:15)
Slt,

d'après la spécification, ça serait plutôt :

<script xlink:href="monscript.es" type="text/ecmascript"/>


Pour l'extension, peu importe puisqu'il est indiqué que c'est de l'ecmascript que l'on utilise (d'ailleurs c'est le langage de script par défaut et le seul requis pour les visionneurs SVG conformes).

a+
Salut,

merci pour la réponse.

En effet, il semblerait bien que ça soit comme ça !

Je l'ai jouée trop naïve et ce type d'inclusion ne doit pas être utilisé des masses sur le net puisque je n'ai rien trouvé en recherchant "inclusion d'un fichier ecmascript dans un SVG" (en moins détaillé comme requête mais en substance ça donnait ça)...

Bon, je teste tout à l'heure et je te dis Smiley cligne

Je me posais par ailleurs une question, pourquoi pas xlink:src ? (et même, pourquoi pas src (ou href) tout seul ?

Pour l'extension, c'est bien ce qu'il me semblait que ça n'avait pas d'importance mais j'avais un doute... merci !!
xlink:href tout simplement parceque SVG fait appel au langage XLink pour décrire les liens et que dans le vocabulaire xlink, on utilise l'attribut href et non src !

a+
Hop, je viens (enfin) de tester la chose, et j'obtiens l'erreur suivant :
a écrit :

Erreur d'analyse XML : préfixe non limité à un espace de noms
Emplacement : file:///D:/Olivier/Fac/Info%20G%E9o/myTp1/svg/transmanche.MIF.svg
Numéro de ligne 10, Colonne 5 : <script type="text/ecmascript" xlink:href="scripts.es" />
----^


Il doit y avoir une déclaration d'espace de nom à faire j'imagine mais je suis un peu totalement débutant Smiley ohwell
Wala, suffit d'être un peu moins assisté ^^

<svg ... xmlns:xlink="http://www.w3.org/1999/xlink">

C'est résolu ! merci Smiley cligne
Par contre, mon truc ne fonctionne plus en utilisant un fichier inclus Smiley ohwell


<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-W3CDTD SVG 1.1EN"
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="20cm" height="20cm" viewBox="0 0 150 150"
    xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
    
	<title>Titre</title>
	<desc>Description</desc>
	
	<script type="text/ecmascript" xlink:href="script.es" />
	<polygon fill="red" stroke="black" stroke-width="0.2" points="5 5, 100 50, 150 100, 5 5" />
</svg>

Et le fichier.es

window.onload = function()
{
	alert('test');
};


En mettant mon alert directement dans la balise script, ça fonctionne mais avec le fichier externe, plus rien Smiley ohwell Pas d'erreur, rien ne se passe...
Avec quel navigateur test tu ton script ? Quel Plug-in SVG ? Tous ne supportent pas l'inclusion de fichier via xlink Smiley cligne
J'utilise Firefox 1.5 sans plugin.

Opera ne supporte pas les scripts ECMA même en interne (en tout cas pour ce que j'ai testé).
<troll mod="bien velu et tout et tout">
Et sinon, c'est fait exprès de sortir des soft pas fini et tout bugué juste pour atteindre une deadline ???
</troll>

L'utilisation de SVG risque d'être très difficile si rien n'est fait du côté des développeurs de navigateurs...
Bon, j'ai peut être pas à me plaindre, beaucoup à été fait depuis quelques temps, mais j'avoue ne pas comprendre pourquoi le support de SVG n'est pas plus pris en compte...

En installant le plugin d'abode en complément ça marcherait ? Je n'avais pas réussi à le faire fonctionner sur la version 1.0 faudra que je teste...

Donc, c'est pas possible de faire du propre qui fonctionne...
Entre Opera qui ne semble pas s'occuper d'ECMAScript, Firefox qui ne voit pas les scripts externes et IE qui... okay n'en parlons pas...

Smiley fulmine Smiley confuse Smiley rale

(désolé pour la gueulante, c'est facile à faire, mais c'est très décevant de voir ce type de bétises pour des logiciels se vantant d'être moderne et en avance sur leur temps...)
Olivier a écrit :
<troll mod="bien velu et tout et tout">


la brosse un peu rase, tout de même, celui-là. Le poil terne et tout. Il est usé Smiley cligne
Désolé, mais le troll a perdu du poil de la bete :
les fichiers javascripts externes fonctionnent maintenant tres bien avec opera 9, firefox 1.5 et firefox 2 !!!...
Le tout étant de mettre les bon elements dans l'entete svg :

<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="OnLoadEvent(evt)" x="0" y="0" viewBox="0 -30 560 560" preserveAspectRatio="xMidYMid meet" width="560" height="560">
<script type="text/ecmascript" xlink:href="./monfichierjavascript.js"/>

Bonnes resolutions de problemes !!!...


Smiley lol
Modifié par mmike74 (07 Dec 2006 - 15:30)
Modérateur
Bonjour mmike74,

Je te remercie de partager ton savoir mais peux-tu encadrer ton code comme indiqué dans la FAQ ? Merci. Smiley cligne

Sous-entends-tu ici qu'on ne peut toujours pas faire autrement que d'insérer le onload en direct dans la balise d'ouverture svg ? Ce n'est pourtant pas conseillé vu le caractère "intrusif" du onload...

et puis il me semble que le type MIME "text/ecmascript" soit obsolète et qu'il faut le remplacer soit par "application/javascript" soit par "application/ecmascript". Reste à voir si le support est correct...

http://www.ietf.org/rfc/rfc4329.txt
Modifié par koala64 (07 Dec 2006 - 14:59)
Désolé pour le manque de finition de mon post, mais je n'ai fait que copier l'entete d'un de mes elements SVG qui fonctionne. Sans le nettoyer ... Smiley confused

Le onload faisait parti du code, mais il n'est bien sûr pas necessaire !!!...

je n'ai pas testé le type MIME "application/javascript" ... peut etre qu'il fonctionne ...
j'attends vos tests ...

mmike74

P.S. : l'objectif de mon post n'était pas de fournir une solution clé en main, mais d'indiquer un chemin vers une solution ...