2010-10-14 4 views
0

J'ai un code qui génère du SVG développé pour IE et Adobe SVG Viewer. Adobe SVG Viewer dispose d'une fonction personnalisée appelée browserEval (voir http://www.xml.com/lpt/a/994) utilisée pour que le navigateur évalue un appel window.open(). Cela ne fonctionne pas dans le moteur de rendu SVG natif de Chrome (et je n'ai pas essayé Firefox).Comment créer une fenêtre contextuelle multiplateforme (IE et Chrome au moins) à l'intérieur d'un fichier SVG?

Comment puis-je réécrire cette fonction contextuelle pour qu'elle fonctionne correctement dans tous les navigateurs supportant SVG? Cet original fonctionne dans IE, mais pas Chrome:

function popUp(loc) { 
    browserEval("window.open('"+loc+"','_blank', 
     'width=1000,height=780,scrollbars=yes,resizable=yes, 
     status=no,toolbar=no,menubar=no,location=no')"); 
} 

J'ai essayé ce qui fonctionne dans Chrome, mais provoque une erreur sur le nombre d'arguments dans IE:

var browserEvalCrossBrowser = (typeof(browserEval)=='undefined') ? 
    function(x) { eval(x); } : browserEval; 

function popUp(loc) { 
    browserEvalCrossBrowser("window.open('"+loc+"','_blank', 
     'width=1000,height=780,scrollbars=yes,resizable=yes, 
     status=no,toolbar=no,menubar=no,location=no')"); 
} 
+0

Autre chose qui ressemble à une erreur: Votre chaîne entre guillemets est multiligne, ce qui n'est pas autorisé. – some

Répondre

0

Il semble que vous manquez un seul citation avant le mot "width", qui est une erreur de syntaxe. À part cela, apparemment, il y a un bug dans browserEval qui cause cette erreur (http://tech.dir.groups.yahoo.com/group/svg-developers/message/9063). Avez-vous essayé function(x) { browserEval(x); } au lieu de browserEval?

+0

C'est une erreur de transcription, c'était correct dans le code. Merci de l'avoir signalé, je vais le corriger. –

Questions connexes