Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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/2/jquery/80.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 每次使用Google扩展加载页面时运行内容脚本?_Javascript_Jquery_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 每次使用Google扩展加载页面时运行内容脚本?

Javascript 每次使用Google扩展加载页面时运行内容脚本?,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我正在做谷歌浏览器的扩展。“我的扩展”当前扩展了内容区域和标题,为jewel容器中的另一个图标(通知和好友请求所在的位置)腾出空间,并添加了该图标。第一次加载页面时效果很好,但是当你转到站点上的另一个页面,然后回到主页时,布局就会出错 由于这不是代码的问题(因为它在第一次加载页面时工作正常),我想知道是否有一种方法可以在每次加载页面时运行内容脚本。这是可能的,还是我可以在每次加载Facebook时用不同的方法将Javascript注入其中?据我所知,每次加载页面时都会正确地注入代码,但当用户选择

我正在做谷歌浏览器的扩展。“我的扩展”当前扩展了内容区域和标题,为jewel容器中的另一个图标(通知和好友请求所在的位置)腾出空间,并添加了该图标。第一次加载页面时效果很好,但是当你转到站点上的另一个页面,然后回到主页时,布局就会出错


由于这不是代码的问题(因为它在第一次加载页面时工作正常),我想知道是否有一种方法可以在每次加载页面时运行内容脚本。这是可能的,还是我可以在每次加载Facebook时用不同的方法将Javascript注入其中?

据我所知,每次加载页面时都会正确地注入代码,但当用户选择不同的选项卡后返回时,您需要再次运行代码


看一看这张照片。你可以。你应该能够监听
visibilitychange
事件,然后再次运行你的代码。

据我所知,每次加载页面时,你的代码都会正确地被注入,但当用户选择不同的选项卡后返回时,你需要再次运行代码吗


看一看这张照片。你可以,你应该能够监听
visibilitychange
事件并再次运行你的代码。

我找到了一种解决方法,使用
setInterval()
每毫秒运行一次代码(或者至少是不总是运行的代码)

显然,除非我误解了,否则Chrome会在每个浏览器会话中运行一次代码,因此使用
setInterval()
是最好的选择。不过,奇怪的是,Chrome曾经运行过我的部分代码,之后就不再运行了,除非满足某些条件


setInterval()
在这种情况下创造了奇迹。

我找到了一种解决方法,使用
setInterval()
每毫秒运行一次代码(或者至少是不总是运行的代码)

显然,除非我误解了,否则Chrome会在每个浏览器会话中运行一次代码,因此使用
setInterval()
是最好的选择。不过,奇怪的是,Chrome曾经运行过我的部分代码,之后就不再运行了,除非满足某些条件


setInterval()
在这种情况下发挥了神奇的作用。

您应该将脚本作为内容脚本添加到清单文件中。每个浏览器会话只执行一次后台页面

显示:
备注:此方法在Chrome内部页面上不起作用…

您应该将脚本作为内容脚本添加到清单文件中。每个浏览器会话只执行一次后台页面

显示:
PS:这种方法在Chrome内部页面上不起作用…

不完全是这样——切换选项卡会保留第一次注入代码时的结果。我需要的是,当点击Facebook按钮时,或者当点击主页时,从Facebook上的任何页面再次运行它。出于某种原因,我的脚本的一部分会自动“撤销”,而其他部分会保留第一次注入的结果。哦,你是说当Facebook加载带有AJAX的页面时,它们会破坏/删除你的一些更改?使用并检查您的更改是否已恢复。根据需要添加回去。
onpopstate
onhashchange
都没有效果。事实上,
onhashchange
开始破坏配置文件。您可能只需要每隔一秒钟检查一下
location.pathname
是否已更改,以及它是否已检查您的修改。不完全是这样——切换选项卡会保留第一次注入代码时的结果。我需要的是,当点击Facebook按钮时,或者当点击主页时,从Facebook上的任何页面再次运行它。出于某种原因,我的脚本的一部分会自动“撤销”,而其他部分会保留第一次注入的结果。哦,你是说当Facebook加载带有AJAX的页面时,它们会破坏/删除你的一些更改?使用并检查您的更改是否已恢复。根据需要添加回去。
onpopstate
onhashchange
都没有效果。事实上,
onhashchange
开始破坏配置文件。你可能只需要每隔一秒钟检查一下
location.pathname
是否已更改,以及它是否已检查你的修改。我以前曾将其用作内容脚本,但那更糟。我将它改为从后台页面运行,这使问题稍微好了一点(通常情况下,它实际上正在运行)。我以前将它用作内容脚本,但这更糟。我将其更改为从后台页面运行,这使问题稍微好一点(通常情况下,它实际上正在运行)。
{
  "name": "",
  "version": "",
  "description": "",
  "icons": { "16": "icon16.png",
           "48": "icon48.png",
           "128": "icon128.png"},
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["go.js"],
      "all_frames":true
    }
  ],
  "permissions": [
    "*://*/*"
  ]
}
// your stuff