Chrome扩展赢得't识别#(contentscript.js匹配)之后的URL部分

Chrome Extension won't identify part of URL after a # (contentscript.js matches)

本文关键字:匹配 js contentscript 之后 部分 URL 扩展 识别 Chrome      更新时间:2023-09-26

我正在为一个特定网站(我不拥有该网站(编写扩展,其URL只在/#/之后变化。

示例:从url 开始

.../#/PF/charts/patients/419d3081-5e20-4347-a852-52b2c333ce85/summary

点击"时间线"链接可进入下一个url

.../#/PF/charts/patients/419d3081-5e20-4347-a852-52b2c333ce85/timeline/encounter

但是当试图匹配url以加载我的内容脚本时,匹配中不包括#及以上的所有内容,所以它认为这些是同一个页面。此外,查看控制台会发现,它甚至没有看到任何新的页面加载,尽管我正在单击链接,整个页面的内容都发生了变化,/#/之后的url也不同。

如果通常的工具(在清单中设置"content_scripts"(不起作用,我如何才能让我的contentscript.js只在需要的地方运行?或者,我可以以某种方式使/#/之后的url可见吗?

任何节俭的解决方案都将不胜感激!

我相信在Chrome扩展匹配模式中,url的锚点(也称为位置片段(总是被忽略。

但是,您可以做的是匹配特定的域,并使用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
        }
    }
} 

当然,contentscript.js每页只运行一次(因为它认为所有位置片段更改都在同一页上(。因此,您必须注意使用onhashchange事件的散列更改,并相应地重新运行脚本。