dou*_*lix 4 javascript url google-chrome google-chrome-extension
我正在为特定网站(我不拥有)编写扩展程序,其网址仅在/#/之后变化。
示例:从URL开始
.../#/PF/charts/patients/419d3081-5e20-4347-a852-52b2c333ce85/summary
Run Code Online (Sandbox Code Playgroud)
点击“时间轴”链接会转到下一个网址
.../#/PF/charts/patients/419d3081-5e20-4347-a852-52b2c333ce85/timeline/encounter
Run Code Online (Sandbox Code Playgroud)
...但是当尝试匹配url以加载我的内容脚本时,匹配中不包括#和之后的所有内容,因此它认为这些页面是同一页面。另外,查看控制台会发现,即使我单击链接,整个页面的内容更改以及/#/之后的网址不同,它甚至都看不到任何新页面加载。
如果常规工具(在清单中设置“ content_scripts”)不起作用,如何使我的contentscript.js仅在需要的地方运行?或者,我可以以某种方式使/#/之后的url可见吗?
任何节俭的解决方案将不胜感激!
我相信url的锚位(也称为位置片段)在Chrome扩展匹配模式中始终会被忽略。
但是,您可以做的是匹配该特定域,并用于document.location.hash
标识位置定位符,并且仅在contentscript.js
页面正确时才在您的位置运行该功能。例如:
if (("onhashchange" in window){
window.onhashchange = function () {
if(document.location.hash == '#/PF/charts/patients/419d3081-5e20-4347-a852-52b2c333ce85/summary'){
//do summary stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
自然,您contentscript.js
每页只会运行一次(因为它认为所有位置片段更改都在同一页上)。因此,您将必须使用onhashchange
事件来注意哈希的变化,并相应地重新运行脚本。