2010-08-18 4 views
4

Я пытаюсь создать расширение Firefox, которое использует приложение flex. Я попытался обернуть его в XUL-типах (< iframe> и < browser>), и у меня нет предпочтения относительно того, какой из них я использую ... в зависимости от того, что работает.Как динамически установить «src» для браузера или элемента iframe (расширение для Firefox)

Проблема в том, что всякий раз, когда я использую относительный путь (доступ через chrome: // или mySWF.html), флэш не загружается.

У меня есть метод поиска абсолютного пути (он размещен ниже), но я не могу для жизни меня выяснить способ динамического изменения src iframe или браузера.

<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> 

Ниже мои 2 способа вызова гибкого приложения:

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

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

Как я могу назвать свою функцию, чтобы установить атрибут Src ???

+0

Похоже, вы не можете создать свой хром манифест правильно. https://developer.mozilla.org/en/chrome_manifest – MatrixFrog

ответ

1

1) Динамическая настройка src работает нормально (см. Нижеприведенный тест).

2) To get a URL of a file, use nsIIOService.newFileURI() вместо попытки конвертировать вручную.

3) onLoad="loadSWF();" в вашем iframe является подозрительным, вы должны были разместить полный XUL-код, который показывает, как все это сочетается. Вы должны вызывать loadSWF не из обработчика нагрузки iframe, а из обработчика нагрузки документа XUL или другого события.

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>