Как динамически установить «src» для браузера или элемента iframe (расширение Firefox) - PullRequest
4 голосов
/ 19 августа 2010

Я пытаюсь создать расширение Firefox, которое использует приложение flex. Я попытался обернуть его в типы XUL (

Проблема в том, что всякий раз, когда я использую относительный путь (доступ через 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 метода вызова приложения flex:

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

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

Как я могу вызвать мою функцию для установки атрибута src ???

1 Ответ

1 голос
/ 17 июля 2011

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

2) Чтобы получить URL-адрес файла, используйте nsIIOService.newFileURI () вместо попыткиконвертировать вручную.

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

Тестовый пример для # 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>
...