2010-08-18 4 views
4

J'essaie de créer une extension Firefox qui utilise une application flexible. J'ai essayé de l'emballer dans les types XUL (< iframe> et < navigateur>) et je n'ai aucune préférence quant à celui que j'utilise ... celui qui fonctionne. Le problème est que chaque fois que j'utilise un chemin relatif (accès via chrome: // ou mySWF.html) le flash ne se charge pas.Comment faire pour définir dynamiquement "src" pour le navigateur ou l'élément iframe (extension Firefox)

J'ai une méthode pour rechercher le chemin absolu (c'est posté ci-dessous) mais je ne peux pas pour la vie de moi trouver un moyen de changer dynamiquement le src d'un iframe ou un navigateur.

<script type="text/javascript"> 
function loadSWF() { 
    alert("loadSWF!"); 
    var fullPath = "file:///" + extensionPath.path.replace(/\\/g,"/") + "/chrome/content/HelloWorld.html"; 
    top.document.getElementById('AppFrame').setAttribute("src",fullPath); 
} 
</script> 

Voici mes 2 méthodes d'appel de l'application Flex:

<iframe 
    type="content" 
    src=?????? 
    flex="1" 
    id="AppFrame" 
    name="AppFrame" 
    onLoad="loadSWF();"/> 

<browser 
    id="browserid" 
    type="content" 
    src=?????? 
    flex="1"/> 

Comment puis-je appeler ma fonction pour définir l'attribut src ???

+0

On dirait que vous ne pouvez pas avoir configuré votre chrome MANIFESTE correctement. https://developer.mozilla.org/en/chrome_manifest – MatrixFrog

Répondre

1

1) Le réglage dynamique src fonctionne correctement (voir le test ci-dessous).

2) To get a URL of a file, use nsIIOService.newFileURI() au lieu d'essayer de convertir à la main.

3) onLoad="loadSWF();" dans votre iframe est suspect, vous devriez avoir posté le code XUL complet qui montre comment tout cela fits together. Vous devez appeler loadSWF non pas à partir du gestionnaire de chargement de l'iframe, mais à partir du gestionnaire de chargement de votre document XUL ou d'un autre événement.

pour Testcase # 1:

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 
<window id="yourwindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml"> 
<script type="text/javascript"> 
<![CDATA[ 
function f() { 
document.getElementById("z").setAttribute("src", "http://google.com/") 
} 
]]> 
</script> 
<iframe type="content" id="z"/> 
<button onclick="f()"/> 
</window> 
Questions connexes