2014-11-02 97 views
0

我已經創建了一個頁面,工人在擴展訪問頁面的頁面,工人

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) in contentScript return "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 
+0

使用'contentScriptFile'而不是'contentScript'。然後你可以看到究竟是哪一行導致了問題。 – willlma 2014-11-03 21:27:42

+0

我在測試中添加了幾行代碼。 – look997 2014-11-05 17:56:07

回答

1

如果你自己編寫HTML,然後使用addon代替self和附加腳本使用<script></script>代替contentScript(File)的頁面。見Scripting trusted page content

如果您未編寫HTML,請參閱Communicating with Page Scripts

+0

嗯,運行,謝謝。 ;) 以前我搞砸了一些我無法做到的事情。 – look997 2014-11-05 19:26:20

+0

沒有工作。 'Object {name:「RequirementError」,message:「contentScriptFile'選項必須是本地URL或一組URL。」 }' – look997 2014-11-05 21:27:15

+0

你正在編寫自己的HTML或不是? – willlma 2014-11-05 22:12:16