这是一个非常简单的 Chrome 扩展程序的代码,该扩展程序可以阻止手动指定的网站。
chrome.webRequest.onBeforeRequest.addListener(function(details) {
return {cancel: true};
},
{urls: ["*://*.google.com/*", "*://*.facebook.com/*"]},
["blocking"]);
我想知道是否可以使这个 url 列表等于网站数组,如果可以,语法是什么。我的目标是从 websocket 服务器检索网站列表,然后让我的 chrome 扩展阻止它们。这是我的代码。
var testSocket = new WebSocket("http://www.example.com/socketserver");
testSocket.onmessage = function (e) {
var websites = e.split(',');
console.log(e);
}
我是 javascript 新手,但我相信这应该允许我连接到“example.com”websocket 服务器,检索以逗号分隔的 url 字符串,并将该字符串拆分为名为“websites”的数组。
假设上面的代码执行了我刚才描述的操作(如果没有,请告诉我),如何将 chrome 扩展中的“urls”设置为等于“websites”?
- 将 webRequest 侦听器设置为全局函数,并在收到列表后重新注册它。
- 另外,在 chrome.storage.local 中保存/加载列表
function blockUrl(details) {
return {cancel: true};
}
// load the list on extension startup
chrome.storage.local.get('urls', data => {
if (data.urls && data.urls[0]) {
chrome.webRequest.onBeforeRequest.addListener(blockUrl, data, ['blocking']);
}
});
testSocket.onmessage = function (e) {
const urls = e.split(',');
chrome.storage.local.set({urls});
chrome.webRequest.onBeforeRequest.removeListener(blockUrl);
if (urls[0]) {
chrome.webRequest.onBeforeRequest.addListener(blockUrl, {urls}, ['blocking']);
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)