js脚本的作用域怎么判定的?

作者站长头像
站长
· 阅读数 15

用油猴写脚本的时候发现,有时候进入一些页面脚本会被重新插入当前页面,有时候又不会。就比如说匹配的url是https://www.a.com/search*,然后只要遇到这个url就就输出helloworld。按理来说只要search后面的请求参数变了,那么这个脚本就得被重新插入一次。

但是问题来了,我在有一个网站里面比如https://www.b.com/search*,不管后面的参数怎么变,我的脚本永远只被加载了一次,就是说只输出一次helloworld,即使这个页面的内容由于请求参数的变化确实变了,我的脚本也只被插入了一次,而且之后就算请求参数发生了变化,我的脚本还是一直存在于这个页面里,不会再输出helloworld了。

我之前一直以为不同网页的js文件都是不互通的,但是这下真的被搞懵了,js脚本的作用到底是怎么判定的,在什么情况下不会把当前网页的js代码继承到下一个页面。js基础不好,可能表达不清,还请见谅。

回复
1个回答
avatar
test
2024-07-16

油猴脚本的执行是在页面从服务端加载后才执行的,如果页面使用了 pushState/replaceState 或者 hash 之类的技术(SPA:单页应用程序),即使页面切换了,油猴也不能及时的执行脚本。

这种情况,你就需要修改 pushState/replaceState 或者监听 hashchange 事件来重新调用你的脚本

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容