ful*_*ard 1 javascript google-chrome google-chrome-extension
我正在尝试使用 webrequest api,但在使用它来阻止网站时遇到了问题。
清单文件
{
"manifest_version": 2,
"name": "blocktwitter",
"description": "block twitter",
"version": "1.0",
"permissions": [
"https://ajax.googleapis.com/",
"activeTab",
"storage",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"],
"persistent": true
}
}
Run Code Online (Sandbox Code Playgroud)
背景.js:
chrome.webRequest.onBeforeRequest.addListener(
function(details) { return {cancel: true}; },
{urls: ["https://twitter.com"]},
["blocking"]);
Run Code Online (Sandbox Code Playgroud)
我从 twitter 复制并粘贴了 url,并从文档中复制了代码,但它仍然无法正常工作。我不确定我做错了什么。帮助将不胜感激。
你有两个问题。
第一个问题是您传递到的 URLchrome.webRequest.onBeforeRequest.addListener()不是有效的匹配模式。匹配模式需要一个路径组件。如果您查看了后台页面/脚本的控制台,您会看到以下错误:
_generated_background_page.html:1 Unchecked runtime.lastError while running webRequestInternal.addEventListener: 'https://twitter.com' is not a valid URL pattern.
Run Code Online (Sandbox Code Playgroud)
你的background.js应该是这样的:
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
console.log('In webRequest');
return {cancel: true};
}, {
urls: ["https://*.twitter.com/*"]
}, ["blocking"]
);
Run Code Online (Sandbox Code Playgroud)
您需要获得您阻止的主机的权限。您必须permissions在manifest.json 中声明数组中的主机。就像是:
{
"manifest_version": 2,
"name": "blocktwitter",
"description": "block twitter",
"version": "1.0",
"permissions": [
"https://ajax.googleapis.com/*",
"https://*.twitter.com/*",
"activeTab",
"storage",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"],
"persistent": true
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3346 次 |
| 最近记录: |