Chrome扩展赢得't识别#(contentscript.js匹配)之后的URL部分
Chrome Extension won't identify part of URL after a # (contentscript.js matches)
我正在为一个特定网站(我不拥有该网站(编写扩展,其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
事件的散列更改,并相应地重新运行脚本。
相关文章:
- Regex匹配除“”之外的所有字符;.js”;
- 为什么JS RegEx提取多个值(只有一个匹配)
- Selenium+js:匹配日期'dd Mmmm-yyyy'在字符串中
- JS正则表达式跳过每隔一个匹配
- '的文件格式和扩展名;file.xls'don't与fileSaver.js匹配
- JS 正则表达式以匹配 HTML 标记中不是 的字符串
- 三.js:如何将边缘助手与网格匹配
- JS Regex帮助匹配URL
- JS Regex的最后两位数字与前两位数字匹配
- js 不能匹配 cookie 名称
- Knockout.js和表:插入<th>将内容转换为匹配<td>
- 如果键与underscore.js匹配,请比较两个数组
- node.js中的模糊字符串匹配+数量匹配
- JS正则表达式匹配单词,包括用空格括起来的单词
- 将非字符串属性与下划线匹配.js在哪里
- 匹配 JS 中的每个字符,但反向引用
- 正确匹配JS多行注释的每一行
- 匹配 js 正则表达式中的最后一个匹配项
- Python正则表达式.用另一个嵌套函数匹配js函数体
- 正则表达式模式匹配 js 中 /* 和 */ 之间的任何内容