2

拡張機能を作成していて、バックグラウンド ページに次の呼び出しがあります。

chrome.webRequest.onBeforeRequest.addListener(function(details) {console.log(details)}, {urls: ["<all_urls>"]}, ["blocking"]);

ただし、実行するたびに、バックグラウンド ページの開発ツールで次のエラーが発生します。

Error during webRequestInternal.addEventListener: You do not have permission to use blocking webRequest listeners. Be sure to declare the webRequestBlocking permission in your manifest. 

私のマニフェストの私の許可は次のように見えますが:

"permissions": [
        "cookies",
        "http://*/*",
        "https://*/*",
        "tabs",
        "history",
        "webRequest",
        "webRequestBlocking"
    ]

ここで一体何が起こっているのですか?これは、Web リクエスト ドキュメントhttp://developer.chrome.com/stable/extensions/webRequest.htmlです。

4

2 に答える 2

2

次のコードでうまく機能しますが、具体的にバックグラウンドページでそれを実行したいのはなぜですか?

スクリーンショット

ここに画像の説明を入力

マニフェスト.json

{
"name":"My First App",
"description":"This is First App",
"version":"1",
"manifest_version":2,
"permissions": [
        "cookies",
        "http://*/*",
        "https://*/*",
        "tabs",
        "history",
        "webRequest",
        "webRequestBlocking"
    ],
"icons":{"16":"icon.jpg"},
"background":{
    "scripts": ["background.js"]
},
"browser_action":{
    "default_popup":"popup.html",
    "default_icon":"icon.jpg"
}
}

popup.html

<html>
<head>
<script src="popup.js"></script>
</head>
<body>
</body>
</html>

popup.js

chrome.webRequest.onBeforeRequest.addListener(function(details) {
console.log(details);
}, {urls: ["<all_urls>"]}, ["blocking"]);

Background.js

function doNothing(){
}
于 2012-11-21T06:01:59.973 に答える
1

最初の Chrome 拡張機能を作成していたときに、同様の問題が発生しました。私の解決策は、拡張機能を削除し、 manifest.jsonを修正して、拡張機能を再度追加することでした。無効にして再度有効にするだけでは、うまくいきません。

拡張機能を Chrome にロードし、デバッグを開始しました。コードにエラーが見つかったときは、拡張機能を無効にし、バグを修正して拡張機能を再度有効にしました。これは、コードエラーを修正するためにうまく機能しました。しかし、ブロッキング方式で webrequest モジュールを使用しようとすると、常に「webRequestInternal.addEventListener 中のエラー: ブロッキング webRequest リスナーを使用する権限がありません。マニフェストで webRequestBlocking 権限を宣言してください。」. manifest.json をどのように変更しても。

于 2013-02-28T11:44:19.490 に答える