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