Javascript URL访问提示

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

我不熟悉Javascript和Chrome扩展,我正在研究一种在用户访问某个网页时触发提示的扩展,但在用户访问该网页时不会触发提示

这里有一个简化的版本重现了这个问题:

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(骨架):

  • 如果希望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 */
    }