Javascript 获取Chrome扩展内容脚本以识别URL哈希中的延迟更改

Javascript 获取Chrome扩展内容脚本以识别URL哈希中的延迟更改,javascript,google-chrome-extension,single-page-application,chrome-extension-manifest-v2,Javascript,Google Chrome Extension,Single Page Application,Chrome Extension Manifest V2,我有一个Chrome扩展(目前是manifest v2,但很快将升级到v3),它需要使用SPA,通过更改URL中的哈希来模拟页面更改 例如: Page 1: https://www.example.com/somedir/#page1 Page 2: https://www.example.com/somedir/#page2 我为#page1和#page2提供了单独的内容脚本,并为网站上的其他页面提供了默认内容脚本 我遇到的问题是,页面最初加载时没有散列,然后在延迟几秒钟后,应用程序添加#p

我有一个Chrome扩展(目前是manifest v2,但很快将升级到v3),它需要使用SPA,通过更改URL中的哈希来模拟页面更改

例如:

Page 1: https://www.example.com/somedir/#page1
Page 2: https://www.example.com/somedir/#page2
我为
#page1
#page2
提供了单独的内容脚本,并为网站上的其他页面提供了默认内容脚本

我遇到的问题是,页面最初加载时没有散列,然后在延迟几秒钟后,应用程序添加
#page1
散列。换句话说,当用户导航到
#page1

  • 该站点最初加载为
  • 我的#page1的Chrome扩展内容脚本查找include glob
    *#page1
    ,在URL中看不到
    #page1
    散列,并返回默认内容脚本
  • 延迟几秒钟后,站点将
    #page1
    散列添加到URL,可能是通过设置
    location.hash
    (即,URL现在是)
我想我要寻找的是某种方法来检测
#page1
散列已添加到URL,然后强制扩展重新执行并为
#page1
插入正确的内容脚本。有办法吗?如果没有,是否有其他方法解决此时间问题


谢谢。

我不知道我是否完全理解你的问题,是否能给你一些好主意。为了更好地理解,我需要一些澄清。1.URL中包含哈希的页面内容是否与之前加载的不包含哈希的页面内容存在显著差异?或者只是滚动文档以查看锚?我不知道散列也可以在注入内容脚本的可能模式中指定。我在官方文件中没有找到任何关于它的信息,但这并不意味着它应该/不可能真正起作用。您正在谈论的通用内容脚本是否会以某种方式(不可逆地)影响扩展的操作逻辑?在实践中,一旦它截取了通用页面,内容脚本是否会做一些事情,这与它在截取带有散列的页面时下一步要做的事情明显相反?您可以使用单个内容脚本并检测所解释的更改。