Javascript Chrome扩展只在刷新时运行,不在页面导航时运行
我有一个chrome扩展,我想在GitHub上操作一些DOM。当我刷新任何给定页面时,所有这些都会按预期工作,但如果我导航到该页面,则通常不会执行脚本 manifest.jsonJavascript Chrome扩展只在刷新时运行,不在页面导航时运行,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我有一个chrome扩展,我想在GitHub上操作一些DOM。当我刷新任何给定页面时,所有这些都会按预期工作,但如果我导航到该页面,则通常不会执行脚本 manifest.json { "manifest_version": 2, "name": "Name", "description": "Detailed description", "version": "1.3.5", "content_scripts": [{ "matches"
{
"manifest_version": 2,
"name": "Name",
"description": "Detailed description",
"version": "1.3.5",
"content_scripts": [{
"matches": ["https://github.com/*/*/issues/*"],
"js": ["jquery-2.1.0.min.js", "index.js"]
}],
"browser_action": {
"default_icon": "icon.png"
},
"permissions": [
"activeTab",
"https://ajax.googleapis.com/"
]
}
index.js
$(document).ready(function() {
// DOM manipulating code
// removed for brevity
});
当您从另一个页面导航到GitHub页面时,页面中的容器将被更新,而不是整个页面 所以,根据我的经验。。。如果您从回购协议的主页面开始切换到发行页面,则扩展并不总是注意到这一变化。因此,我建议将清单
匹配项更改为github的所有内容,而不仅仅是问题:
{
"manifest_version": 2,
"name": "Name",
"description": "Detailed description",
"version": "1.3.5",
"content_scripts": [{
"matches": ["https://github.com/*"],
"js": ["jquery-2.1.0.min.js", "index.js"]
}],
"browser_action": {
"default_icon": "icon.png"
},
"permissions": [
"activeTab",
"https://ajax.googleapis.com/"
]
}
如果这不起作用,那么在代码中,监视文档中的“pjax:end”事件:
Github使用历史api进行站点导航,您必须钩住历史pushState函数,@ZigMandel该帖子中建议的解决方案在我的情况下不起作用,因此我提出了一个新问题。@James,如果您尝试了一些东西但不起作用,那么您应该在问题中提及它。不这样做只会浪费你请求帮助的人的时间。@james的确,如果你不准确地展示你尝试了什么以及失败了什么,我们就帮不了你。什么时候启动“pjax:end”事件?我已经试过实施你的两个建议,但问题仍然存在。这个解决方案应该有效,我使用相同的方法@James,确保重新加载了整个扩展和站点(用pjax:end重新注入新内容脚本)。“pjax:end”是在GitHub将新内容加载到目标容器后触发的。我无法使此解决方案正常工作。我多次重新加载扩展,重新启动了chrome,重新启动了我的计算机,但我无法在“pjax:end”事件触发时获得要打印的console.log()消息。它应该在您更改页面、单击选项卡、转到问题等时触发。您可能必须使用纯javascript,如我在示例中所示,而不是使用jQuery绑定。
document.addEventListener("pjax:end", function() {
// run code/call function
});