Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 Chrome扩展只在刷新时运行,不在页面导航时运行_Javascript_Jquery_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript Chrome扩展只在刷新时运行,不在页面导航时运行

Javascript 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"

我有一个chrome扩展,我想在GitHub上操作一些DOM。当我刷新任何给定页面时,所有这些都会按预期工作,但如果我导航到该页面,则通常不会执行脚本

manifest.json

{
    "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
});