4

我正在尝试创建一个使用 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 属性???

4

1 回答 1

1

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

2)要获取文件的 URL,请使用 nsIIOService.newFileURI()而不是尝试手动转换。

3)onLoad="loadSWF();"在你的 iframe 中是可疑的,你应该发布完整的 XUL 代码来显示它是如何组合在一起的。您不应从 iframe 的加载处理程序调用 loadSWF,而应从 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>
于 2011-07-17T10:50:50.170 回答