2017-08-11 3 views
0

私はバックグラウンドスクリプトから選択されたタブコンテキストにコードを注入しようとしていますが、私はそのアクセス許可にいくつか問題があります。電子だはexecuteScriptの許可を発行します

manifest.jsonを

{ 
    "manifest_version": 2, 
    "name": "prova", 
    "version": "1.0", 
    "permissions": [ 
    "activeTab" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": false 
    }, 
    "content_scripts": [ 
    { 
     "matches": ["https://*"], 
     "css": ["mystyles.css"], 
     "js": ["myscript.js"] 
    } 
    ] 
} 

background.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
    chrome.tabs.executeScript(null,{code:"console.log('Not done!');"}); 
    sendResponse({}); 
    }); 

myscript.js

chrome.runtime.sendMessage({}, function(response) { 
    console.log("Done!"); 
    }); 

rrorは、バックグラウンドコンソールに表示されます。

未確認runtime.lastError tabs.executeScriptを実行中:ページのできない アクセス内容を。拡張マニフェストは、それぞれのホストにアクセスする許可を に要求する必要があります。

私は本当にすべての提案に感謝します。 ありがとう。 Programmatic injectionセクションから

+0

このアクセス許可を有効にする操作のリストについては、[activeTab documentation](https://developer.chrome.com/extensions/activeTab)を参照してください。 – wOxxOm

答えて

0

:ページにコードを挿入する

、あなたの拡張機能は、ページのクロスオリジンの権限を持っている必要があります。また、chrome.tabsモジュールを使用できる必要があります。マニフェストファイルの権限フィールドを使用して、両方の種類の権限を取得できます。

つまり、コードを実行するホストの許可をリクエストする必要があります。 だから、manifest.jsonからpermissionsセクションは次のようにする必要があります:host match patternsを見てみましょう

"permissions": [ 
    "tabs", 
    "http://*.example.com/", 
] 

EDIT 1:

私はまた、あなたがcontent-scriptprogrammatic injectionを使用していることに気づきました。タブでコードを実行するこの2つの方法は、ほぼ同じ仕事をしますが、さまざまな方法で行います。

  1. content_scriptマニフェストのセクションは、ホストパターンと一致するすべてのページでスクリプトを実行するのに役立ちます。
  2. プログラム注入(PI)は、コード(ファイルまたは文字列)の実行にも役立ちます。しかし、それに対するホストの許可はマニフェストのセクションで設定する必要があります。 PIは、すべてのページではなく、まれにスクリプトを実行する必要がある場合に使用します。
+0

"permissions":[ "tabs"、 ""、 ]にアクセス権を変更しましたが、それでもエラーが表示されます。私はこれをどのように解決するか分かりません –

+0

私はページコンテキストへのアクセスとインターセプトxhr呼び出しのためだけにプログラムによる注入を利用しました。 –

関連する問題