2016-05-24 11 views
2

そのタブが開いているときに新しいタブでスクリプトを実行しようとしています。私のバックグラウンドスクリプトでFirefoxエクステンション:コードではなくファイルでexecuteScriptを呼び出すときのエラー

私が持っている:contentScript.jsで

var listener = function (tab) { 
    browser.tabs.executeScript(null, { file: "content_scripts/contentScript.js" }); 
} 

browser.tabs.onCreated.addListener(listener); 

Error: Permission denied to access property "chrome" 

私は単純にコードを実行した場合:私は次のエラーを取得する。このことから

function foo() { 
    console.log("Executed"); 
} 

foo(); 

jsスクリプトを呼び出すのではなく、ex:

browser.tabs.executeScript(null, { code: "console.log("Executed") }); 

これでエラーは発生しません。これを引き起こす原因は何ですか?

+0

あなたは 'manifest.json'に行き、そのファイルを' webaccessible'として設定しなければならないと思います、それを試しましたか? – Noitidart

+0

'executeScript'の最初のパラメータはオプションです。あなたは' null'を取り除くことができます。 'web_accessible_resources'については、[executeScript](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/Tabs/executeScript)のページには載っておらず、少なくともFF48では必要ではなかった。 –

答えて

0

言われていますFF開発者ドキュメント場合:そう、これはトリックを行う必要があり

In Firefox, relative URLs passed into tabs.executeScript() or tabs.insertCSS() are resolved relative to the current page URL. In Chrome, these URLs are resolved relative to the add-on's base URL. To work cross-browser, you can specify the path as an absolute URL, starting at the add-on's root, like this:

/path/to/script.js

が、未知の理由insertCSS()とexecuteScript(両方による事実FF48)で実行する必要はありません。同時に私は、これらの関数を使ってコードを実行する方法をデバッガでステップバイステップモードで実行すると、それらが正常に起動することを発見しました。だから、FFバグのように見えます。

関連する問題