如何为浏览器或iframe元素动态设置“src”(Firefox扩展)

时间:2010-08-18 22:36:29

标签: browser iframe firefox-addon xul src

我正在尝试创建一个使用flex应用程序的Firefox扩展。我试图将它包装在XUL类型中(< iframe>和< browser>)并且我没有偏好我使用哪一个......无论哪个都有效。

问题是每当我使用相对路径(通过chrome://或mySWF.html访问)时,闪存都无法加载。

我有一种搜索绝对路径的方法(它在下面发布),但我不能为我的生活找到一种方法来动态更改iframe或浏览器的src。

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

以下是我调用flex应用程序的两种方法:

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

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

如何调用我的函数来设置src属性???

1 个答案:

答案 0 :(得分:1)

1)动态设置src可以正常工作(参见下面的测试用例)。

2)To get a URL of a file, use nsIIOService.newFileURI()而非尝试手工转换。

你的iframe中的onLoad="loadSWF();"是可疑的,你应该发布完整的XUL代码,以显示它们如何组合在一起。您应该不是从iframe的加载处理程序调用loadSWF,而是从XUL文档的加载处理程序或其他事件调用loadSWF。

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