访问Page-Worker中页面的元素

时间:2014-11-02 23:07:37

标签: firefox-addon-sdk

我在扩展程序

中创建了一个页面工作者
dup = pageWorker.Page({
    contentScript: "self.port.on('alert', function(message) {"+
        "console.log(message);"+
        "document.querySelector('.test-element').title = message;"+
    "});",
    contentScriptWhen: "ready",
    contentURL: "http://example.com/Licznik-beta/addon.html"
});

在“contentScript”中,我可以与“document”相关联。 但我无法与window,函数或变量相关联。 console.log(window)中的contentScript返回"TypeError: cyclic object value timers.js:43"

我不明白它是如何运作的。 有人可以向我解释一下吗?

如何更改?

修改

我在测试中添加了几行:

self.port.on('addon-licznik', function () {

    console.log(document);
    console.log(window); //  TypeError: cyclic object value   timers.js:43
    runFromAddon(); // ReferenceError: runFromAddon is not defined   timers.js:43

});

功能:runFromAddon();当然有。

第二次测试:

function funSet (tresc) {
    var addonScript = document.querySelector(".addon-script");
    if ( addonScript != undefined ) {
        document.querySelector('head').removeChild( addonScript );
    }
    var script = document.createElement("script");
    script.className = "addon-script";
    script.textContent = tresc;
    document.querySelector('head').appendChild(script);
}

function marmo (message) {
    console.log(message);

    funSet("console.log(window); runFromAddon();");
}


self.port.on('addon-licznik', marmo);

效果很好。

Window → http://example.com/Licznik-beta/addon.html
runFromAddon-Log

1 个答案:

答案 0 :(得分:1)

如果您自己编写HTML,请使用addon代替self,并使用<script></script>代替contentScript(File)将脚本附加到页面。请参阅Scripting trusted page content

如果您没有编写HTML,请参阅Communicating with Page Scripts