Firefox page-mod和iframe没有加载

时间:2014-01-30 12:33:18

标签: firefox firefox-addon firefox-addon-sdk

所以,我正在开发一个基于页面mod和iframe的firefox插件。内容脚本中使用iframe的chrome版本运行正常。

所以基本上,我注入了一个按钮,当按下按钮时,他改变了包含一些窗口内容的div的显示类型(在浏览器中创建一个可移动的窗口和一个关闭按钮),这个窗口包含一个iframe。 iframe包含完全包含在插件包中的应用程序,只需对服务器进行少量ajax调用即可刷新本地存储数据。

我可以注入打开按钮,窗口化内容和iframe,但每当我放入iframe时,内容都没有加载。 (在一个案例中除外,但不是我想要的)。

基本上设置iframe的内容:

  • 检索资源中的网址:require(“sdk / self”)。url(“index.html”)
  • 通过消息
  • 将其发送到我的注射器
  • 使用以下命令在iframe中设置:iframe.setAttribute(“src”,iframeSource);

以下是页面中注入的内容:

<div id="iframeContainer" style="border: medium none; width: 550px; height: 600px; background…olute; top: 50px; right: 10px; z-index: 200; display: block;">

<iframe id="master" frameborder="0" scrolling="no" src="resource://jid1-83zazep6ncytaa-at-jetpack/myaddon/data/index.html" style="border:none; width:550px; height:600px; background-color: transparent; position:absolute; z-index: 100; cursor:default;">

    #document
        <html>
            <head></head>
            <body></body>
        </html>

</iframe>
    <div id="clsBtn" style="border:none; width:25px; height:25px; position:absolute; top: 8px; right: 20px; z-index: 301;">
        <div id="closeShadow" style="width: 0px; height: 0px; box-shadow: 12px 12px 8px 8px rgb(255, 255, 128); z-index: 302; display: none;"></div>
        <img src="resource://jid1-83zazep6ncytaa-at-jetpack/myaddon/data/images/cross.png" style="border:none; width:25px; height:25px; position:absolute; z-index: 303; cursor:pointer;" title="Close"></img>
    </div>

</div>
<div id="openBtn" style="border:none; width:50px; height:50px; position:absolute; bottom: 5px; right: 10px; z-index: 301;">

    <div id="openShadow" style="width: 0px; height: 0px; box-shadow: 25px 25px 25px 15px rgb(255, 255, 255); z-index: 302; display: none;"></div>
    <img src="resource://jid1-83zazep6ncytaa-at-jetpack/myaddon/data/images/icon.png" style="border:none; width:50px; height:50px; position:absolute; z-index: 303; cursor:pointer;" title="Open TSO trade"></img>

</div>
<div id="headerDiv" style="border: medium none; width: 480px; height: 23px; position: a…peat scroll 0% 0% transparent; cursor: move; display: block;"></div>

如果我浏览资源://jid1-83zazep6ncytaa-at-jetpack/myaddon/data/index.html我会正确呈现页面(css和js functionnal)。 此外,两个按钮和标题也正确显示(图像,样式和相关的js)。所以它真的在没有加载和渲染的iframe上。

在控制台中,我没有收到任何js错误或安全错误。

如果我用谷歌替换iframe内容(并在谷歌上注入),iframe也不会渲染。

你有什么想法吗?

PS:有一种方法可行但不是我想要的。我发现的方法的问题是javascript没有运行,我仍然有一些样式问题。所以不是我认为的方式。

// Load the document
var source = data.load("index.html");

// Replace the relative path with the packed paths
source = source.replace("css/style.css", data.url("css/style.css"));
source = source.replace("css/ico.css", data.url("css/ico.css"));
source = source.replace("css/jquery-ui.css", data.url("css/jquery-ui.css"));
source = source.replace("js/external/jquery-1.9.1.js", data.url("js/external/jquery-1.9.1.js"));
source = source.replace("js/external/jquery-numeric.js", data.url("js/external/jquery-numeric.js"));
source = source.replace("js/external/jquery-ui.js", data.url("js/external/jquery-ui.js"));
source = source.replace("js/trade/data.js", data.url("js/trade/data.js"));
source = source.replace("js/trade/main.js", data.url("js/trade/main.js"));
console.log(source);

// Encode the content
let content = encodeURIComponent(source);
let binarySource = "data:text/html;charset=utf-8," + content;

// When in the injector, set the "binary source" as content
iframe.contentWindow.location.href=iframeSource;

0 个答案:

没有答案