Javascript URL访问提示
我不熟悉Javascript和Chrome扩展,我正在研究一种在用户访问某个网页时触发提示的扩展,但在用户访问该网页时不会触发提示 这里有一个简化的版本重现了这个问题:Javascript URL访问提示,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我不熟悉Javascript和Chrome扩展,我正在研究一种在用户访问某个网页时触发提示的扩展,但在用户访问该网页时不会触发提示 这里有一个简化的版本重现了这个问题: chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) { var url = tabs[0].url; if (url === "example.com") { confirm("You are vis
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
if (url === "example.com") {
confirm("You are visiting " + URL);
}
});
我希望这会在用户访问“Example.com”时触发提示,但我想我误解了Chrome是如何从活动选项卡中提取URL的,可能是如何触发事件的
任何提示都将不胜感激 试试换衣服
如果(url==“example.com”)
到
如果(url==“example.com”| | url==“”| | url==“”)
在你的回答中,你引用了一句话,但你从一堆答案中选择了一个奇怪的答案 与其自己检测页面加载,最好依靠Chrome的机制,这将确保在加载请求网页的每个选项卡中执行脚本
"content_scripts" : [{
"matches": ["*://*.example1.com/*", "*://*.example2.com/"],
"js": ["confirm.js"]
}],
然后有一个非常简单的confirm.js:
confirm("You are visiting " + location.href);
这将是非常有效的,因为Chrome将为您过滤本机请求"content_scripts" : [{
"matches": ["*://*/*"],
"js": ["confirm.js"]
}],
和confirm.js(骨架):
如果你真的想把你的逻辑放在后台,你可以听各种各样的事件
chrome.tabs.onUpdated
通过changeInfo.status==“complete”
过滤在大多数情况下都应该有效,但并不总是一个好主意。如果页面加载资源缓慢,它将很晚启动,如果页面使用基于锚的导航,它可能会再次启动(您可能不希望这样)。即使您这样做,在那之后进行选项卡查询也没有什么意义,因为事件包含触发它的页面的选项卡ID
还提供了相关事件。尝试执行
警报(选项卡[0].url)
或控制台.log(选项卡[0].url)
查看url的语法,可能只是比较错误。谢谢,这给了我所需的提示。结果证明我使用的触发器是错误的,因此在加载扩展时函数只运行了一次,而在加载页面时没有正确运行。我会用修复来回答我自己的问题。第一个运行得很好,第二个运行得不太好(尽管我认为你的说明很清楚)。第二,从长远来看,这对我来说可能是最好的。如果希望脚本在URL中包含“example”等词的页面上运行,您会在这里使用什么样的筛选逻辑?我想我可以使用regex,但我正在努力使用脚本,而“if(location.host==”example.com“)似乎不起作用。。。但正如我所说,我对JS和ChromeExt都是新手,所以我确信这是我的错误。一个小例子可以帮助我学习。我的解决方案中有一个输入错误,我省略了StorageArea(local
)。将来,不要忽略调试代码:页面的JS控制台中可能会出现错误。
chrome.storage.local.get("hostFilterData", function(data){
if( checkUrl(location.host, data.hostFilterData) ) {
confirm("You are visiting " + location.href);
}
});
function checkUrl(location.host, filterData){
/* your logic goes here */
}