Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何识别用户是否在特定站点上?_Javascript_Firefox Addon Webextensions - Fatal编程技术网

Javascript 如何识别用户是否在特定站点上?

Javascript 如何识别用户是否在特定站点上?,javascript,firefox-addon-webextensions,Javascript,Firefox Addon Webextensions,我尝试创建一个WebExtension,如果它位于特定文件夹中的特定站点上,它可以做一些事情。我试图识别站点和子文件夹,如下所示: var on = true; //This function checks if the current site is Google after something was searched function check_if_engine() { var loc = window.location.href; if (loc.includes("goo

我尝试创建一个WebExtension,如果它位于特定文件夹中的特定站点上,它可以做一些事情。我试图识别站点和子文件夹,如下所示:

var on = true;

//This function checks if the current site is Google after something was searched
function check_if_engine() {
  var loc = window.location.href;
  if (loc.includes("google")) {
    alert("Includes google");
    if (log.includes("search?")) {
      return true;
    }
    return false;
  }
  return false;

  //...

function start_all() {
  if (on) {
    alert("Addon activated!");
    if (check_if_engine()) {
      alert("Website is Google");
      //...
}
//Checks if the tab loaded a new URL
browser.tabs.onUpdated.addListener(start_all);
mainfest.json:

{
"manifest_version": 2,
"name": "Is this a Google Search?",
"version": "1.0",

"description": "This Addon tells you if you are on Google Search Page",
"icons": {
    "48": "icon/icon.png"
},

"browser_action": {
    "default_icon": "icon/icon.png",
    "default_title": "Is this a Google search?"
},

"permissions": [
    "activeTab"
],

"background": {
    "scripts": ["main.js"]
}
}
没有任何其他背景/内容脚本

但是,如果我尝试了它,就没有消息显示“包括谷歌”,返回值是“假”,即使我加载了谷歌页面(即时搜索被禁用)并搜索了一些东西。你能帮我吗


谢谢

我使用了一个在manifest.json中指定的域中激活的内容脚本。它通过
browser.runtime
向后台脚本发送一条伪消息。然后,如果您使用
document.URL
而不是
location.href
,它会向用户发送一条消息

if(window.document.URL == "http://example.org"){
 // code
}
要比较的web()始终包含协议


您可以在Mozilla文档:或W3Schools:中看到参考信息。

我建议您阅读该页面(可能通过阅读从那里链接的页面进行工作)。它包含总体架构信息,这将有助于您了解事物的总体组织/完成方式。您还应该阅读文档和。基本上,
var loc=window.location.href
不会提供有关更新选项卡的信息,只提供背景页面的“位置”,这对您来说是无用的。谢谢大家。我把文件理解错了。我想我也可以在内容脚本和背景脚本中做同样的事情(不需要操纵当前显示的页面)。我现在使用“browser.runtime”的消息功能将当前页面从内容脚本发送到后台脚本。很高兴您找到了解决问题的方法。请发布问题的答案,以便找到此问题的其他人也能找到解决方案。请注意,不应将实际答案/解决方案编辑到您的问题中。你应该用你用来解决问题的代码创建你自己的答案,然后接受它(系统可能需要48小时的延迟才能接受你自己的答案)。当你自己解决了问题,你不需要内容脚本;您可以使用
tabs.getAll
tabs.query
从后台页面检索选项卡URL。例如,请参阅。请在回答中添加一些解释。请阅读。正如@MrMush所指出的,即使代码解决了问题,您也应该在代码周围加入一些上下文/解释,以使其对其他人更有用。对不起,我是新回答问题的人,所以我会尽我所能