Bonjour
Un problème qui semble du soit à un bug Mozilla, soit à une incompréhension de ma part. Voilà une version simplifiée, car dans la réalité c'est bien plus complexe. J'ai une page test5_A.html qui contient une icone : une flèche de navigation vers l'avant, soit le fichier test5.svg. Je paramètre le lien dans ce fichier en utilisant un attribut <param> sur la balise <object> qui affiche le svg. Le lien pointe sur une autre page test5_B.html.
Voici les fichiers.
test5.svg
test5_A.html
test5_B.html
Si je pose ces trois fichiers dans le même répertoire, et que je charge test5_A.html, j'obtiens bien mon icone, elle est dynamique (onMouseOver) et lorsque je clique, on va sur test5_B.html. Jusque là, comme disait le mec tombant du 20° étage et arrivant au 10°, tout va bien. Mais si j'ai l'idée saugrenue d'organiser mes fichiers, que me mets les pages html dans un répertoire main/pages, le fichier svg dans un répertoire main/icones, en rectifiant le nom du fichier svg dans la balise object : data="../icones/test5.svg", alors là, gros problème. Je tombe sur une exception de sécurité de Firefox. Apparemment, il considère que le retour arrière "../" est une violation de sa stratégie de sécurité, et il l'interdit. L'instruction qui plante dans le svg est :
J'ai cherché là dedans :
http://www.mozilla.org/projects/security/components/ConfigPolicy.html
https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript?redirectlocale=en-US&redirectslug=Same_origin_policy_for_JavaScript
Mais si je sens bien que là est l'origine de mon problème, je ne trouve pas la solution. Bien sur, je pourrais réorganiser mes fichiers (il y en a un paquet) en mettant tout à plat, ou encore les icones en sous-répertoire du répertoire qui contient les pages, mais cela ne me plait pas. Quelqu'un a déjà rencontré ça et peut suggérer une solution ?
Modifié par JiPe38 (16 Mar 2013 - 18:56)
Un problème qui semble du soit à un bug Mozilla, soit à une incompréhension de ma part. Voilà une version simplifiée, car dans la réalité c'est bien plus complexe. J'ai une page test5_A.html qui contient une icone : une flèche de navigation vers l'avant, soit le fichier test5.svg. Je paramètre le lien dans ce fichier en utilisant un attribut <param> sur la balise <object> qui affiche le svg. Le lien pointe sur une autre page test5_B.html.
Voici les fichiers.
test5.svg
<?xml version="1.0" encoding="UTF-8"?>
<svg width="100" height="100"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
onload="gerer()">
<script type="text/ecmascript"><![CDATA[
function gerer()
{
var href ;
var params = document.defaultView.frameElement.getElementsByTagName('param') ;
for (var p in params) if (params[p].name == 'lien') href = params[p].value;
if (href != null)
document.getElementById('zoneCliquable').setAttribute('xlink:href', href);
}
]]></script>
<g display="block" stroke="#f00" stroke-width="8.0">
<path fill= "none"
d="M 80,50 L 20,20 20,80 z" />
<a id="zoneCliquable" xlink:href="erreur.html" target="_top">
<rect x="10" y="10" width="80" height="80"
stroke="none" fill="red" fill-opacity="0.05" />
</a>
<set attributeName="stroke" from="#f00" to="#c00" begin="mouseover" end="mouseout" />
</g>
</svg>
test5_A.html
<!DOCTYPE HTML>
<html>
<head><meta http-equiv="Content-Type" content="string; charset=UTF-8"></head>
<body>
<h1>Page A</h1><br>
<object id = "testId" data="test5.svg" type="image/svg+xml"
style="display:block">
<param name="lien" value="test5_B.html">
</object>
</body>
</html>
test5_B.html
<!DOCTYPE HTML>
<html>
<head><meta http-equiv="Content-Type" content="string; charset=UTF-8"></head>
<body>
<h1>Page B</h1>
</body>
</html>
Si je pose ces trois fichiers dans le même répertoire, et que je charge test5_A.html, j'obtiens bien mon icone, elle est dynamique (onMouseOver) et lorsque je clique, on va sur test5_B.html. Jusque là, comme disait le mec tombant du 20° étage et arrivant au 10°, tout va bien. Mais si j'ai l'idée saugrenue d'organiser mes fichiers, que me mets les pages html dans un répertoire main/pages, le fichier svg dans un répertoire main/icones, en rectifiant le nom du fichier svg dans la balise object : data="../icones/test5.svg", alors là, gros problème. Je tombe sur une exception de sécurité de Firefox. Apparemment, il considère que le retour arrière "../" est une violation de sa stratégie de sécurité, et il l'interdit. L'instruction qui plante dans le svg est :
var params = document.defaultView.frameElement.getElementsByTagName('param') ;
J'ai cherché là dedans :
http://www.mozilla.org/projects/security/components/ConfigPolicy.html
https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript?redirectlocale=en-US&redirectslug=Same_origin_policy_for_JavaScript
Mais si je sens bien que là est l'origine de mon problème, je ne trouve pas la solution. Bien sur, je pourrais réorganiser mes fichiers (il y en a un paquet) en mettant tout à plat, ou encore les icones en sous-répertoire du répertoire qui contient les pages, mais cela ne me plait pas. Quelqu'un a déjà rencontré ça et peut suggérer une solution ?
Modifié par JiPe38 (16 Mar 2013 - 18:56)