Page 1 sur 2

svg+javascript+firefox

Publié : 30 nov. 2005, 15:46
par mon nom est personne
bonjour,

Comment puis-je accéder depuis mon svg à une fonction javascript contenue dans la page html qui appelle le fichier svg ??
Ma page focntionne sous IE mas pas sous firefox.

Voici le bout de code :

dans le svg :
<script type='text/javascript'>
var doc;
function onload(evt)
{
var target = evt.getTarget();
doc = target.getOwnerDocument();
}
var current = '';
function mouseclick(id)
{
select_zone(id);
}
</script>

j'appelle le svg dans ma page html :
<embed height="350" width="350" name="Map" src="./svg/carte_coloree/carte_init.svg" type="image/svg">

et la focntion select_zone se trouve dans ma page html


Merci

Publié : 01 déc. 2005, 07:48
par calimo
Déjà, <embed> n'est pas un moyen valide d'appeler les SVG. Il s'agit d'une vieille balise inventée par Netscape et jamais standardisée.

Tu dois utiliser l'élément object :

Code : Tout sélectionner

<object type="image/svg" data="./svg/carte_coloree/carte_init.svg" />
(il faut ajouter un <param filename="./svg/carte_coloree/carte_init.svg" /> pour que ça fonctionne dans IE).

Ensuite, comment as-tu défini ta fonction select_zone ?

Publié : 01 déc. 2005, 16:32
par mon nom est personne
Salut,

Ma fonction select_zone est en fait dans un fichier .js que j'inclu au début de ma page HTML. Je vais déjà essayer de changer la balise embed dans mon HTML

Publié : 01 déc. 2005, 18:23
par calimo
Sinon tu peux aussi nous donner directement l'adresse du site pour qu'on puisse voir :wink:

Publié : 02 déc. 2005, 08:45
par mon nom est personne
Bonjour,

Je ne peux pas vous donner l'adresse car je développe en local.
En fait mon probleme est que mon svg represente une carte cliquable. La fonction select-zone me permet de recuperer l'identifiant de la zone qui a été cliquée. Ensuite cet identifiant me sert dans mon formulaire html et dans d'autres fonctions javascript.

Merci pour votre aide

svg+javascript

Publié : 06 déc. 2005, 09:44
par mon nom est personne
bonjour,

Je ne trouve pas de solution à mon problème !! Quelqu'un aurait-il une idée ou faut-il laisser tomber firefox pour retourner sous IE ???

Merci

Publié : 06 déc. 2005, 09:50
par calimo
Ce n'est pas parce que toi tu retournes sous IE que tes visiteurs feront de même. Comme je l'ai dit, sans code, sans exemple, sans rien, eh ben&#133; on ne fait rien :?

Publié : 06 déc. 2005, 10:04
par mon nom est personne
Salut,

Mais je developpe en LOCAL, donc pas d'acces exterieur.
Le probleme est juste de savoir comment appeler depuis mon svg une fonction javascript qui se trouve dans la page html

Publié : 06 déc. 2005, 10:11
par Flore
mon nom est personne a écrit :Mais je developpe en LOCAL, donc pas d'acces exterieur.
Et alors ? Tu as un code non ?
Soit tu le copies ici et on peut t'aider, soit on ne peut rien faire...

Publié : 06 déc. 2005, 10:17
par calimo
Je répète encore une fois si nécessaire qu'il faut utiliser l'élément object pour insérer un objet dans une page.

Embed n'a jamais été standardisé, ce n'est qu'une relique du passé dont tu peux te passer :wink:

Publié : 06 déc. 2005, 10:20
par mon nom est personne
Voila en gros ce que je fais dans mon code. Je ne peux pas déposer l'ensemble du code ici car je travaille pour une entrprise

dans le svg :

Code : Tout sélectionner

<script type='text/javascript'>
var doc;
function onload(evt)
{
var target = evt.getTarget();
doc = target.getOwnerDocument();
}
var current = '';
function mouseclick(id)
{
select_zone(id);
}
</script>

j'appelle le svg dans ma page html :
<embed height="350" width="350" name="Map" src="./svg/carte_coloree/carte_init.svg" type="image/svg">
et la focntion select_zone se trouve dans ma page html

Je ne sais pas comment vous expliquer autrement peut être que je m'exprime mal
Merci

Publié : 06 déc. 2005, 10:24
par calimo
Pfff :roll:
Je dois l'écrire en rouge, gros, gras, défilant, clignottant ?

  1. Vire le embed et remplace-le par un object
  2. Sans le code de la fonction select_zone, comment veux-tu qu'on te dise quoi que ce soit ? On s'en fout de savoir qu'elle est dans un autre fichier, ça n'a aucune importance (normalement). Mais sans son code on ne peut rien faire !
[/color][/b][/size]

C'est mieux comme ça ? :lol:

Publié : 06 déc. 2005, 10:39
par mon nom est personne
Ca ne sert à rien de s'énerver comme ça !
J'ai deja dit que le probleme est que je ne passe pas du tout dans la fonction.

Je récapitule :
J'ai fait un test en mettant une fonction dans la page HTML : la je te livre le code la fonction :

Code : Tout sélectionner

function toto (){
alert("coucou");
}
Et figure toi qu'il ne PASSE PAS DANS LA FONCTION !!

Publié : 06 déc. 2005, 10:52
par chBok
Tu utilises du SVG dans ta page HTML mais les scripts externes ne sont accessibles qu'avec MSIE. Je pense que c'est normal car MSIE utilise pour cela des contrôles activeX, invisibles pour toi, mais bien présents. Ils ne fonctionneront pas avec Firefox.

:idea: Il faudrait que tu testes avec Firefox 1.5 l'inclusion de svg dans une "simple" balise <svg xmlns="http://www.w3.org/2000/svg">...</svg>. De ce fait, tu enlèves des balises <embed> ou <object>. (Plus d'info...)

Comme le SVG accède maintenant au objets du DOM, je pense qu'il pourra accéder à un script (je suis confiant mais je n'ai pas encore testé).

Publié : 06 déc. 2005, 11:32
par calimo
mon nom est personne a écrit :Ca ne sert à rien de s'énerver comme ça !
Je ne m'énerve pas, il en faudrait bien plus que ça. Remarque le petit " :lol: " à la fin de mon message :wink:
mon nom est personne a écrit :J'ai deja dit que le probleme est que je ne passe pas du tout dans la fonction.
Ah bon ? Il ne me semble pas avoir lu ça (ou alors c'était implicite ? Il faut se méfier des implicites :lol: ).

Bon, ben au moins j'aurai appris quelque chose aujourd'hui :)