页面 URL 更改时如何执行代码
在 Greasemonkey 脚本编写的上下文中,有必要响应页面 URL 的更改高效的 URL (location.href)。要在不引入超时或轮询的情况下实现此目的,请考虑利用 MutationObserver API。
使用 MutationObserver 的解决方案
初始化旧 URL:
<code class="js">var oldHref = document.location.href;</code>
将 MutationObserver 附加到 body 元素:
<code class="js">window.onload = function() { var bodyList = document.querySelector('body'); var observer = new MutationObserver(function(mutations) { if (oldHref != document.location.href) { oldHref = document.location.href; /* Execute your code here */ } }); var config = { childList: true, subtree: true }; observer.observe(bodyList, config); };</code>
最新 JavaScript 规范
对于支持最新 JavaScript 规范的现代浏览器,请使用以下简化语法:
<code class="js">const observeUrlChange = () => { let oldHref = document.location.href; const body = document.querySelector('body'); const observer = new MutationObserver(mutations => { if (oldHref !== document.location.href) { oldHref = document.location.href; /* Execute your code here */ } }); observer.observe(body, { childList: true, subtree: true }); }; window.onload = observeUrlChange;</code>
通过利用 MutationObserver,您可以有效捕获 URL 更改并触发自定义代码执行,而无需诉诸不可靠的轮询技术。
以上是Greasemonkey中如何使用MutationObserver在页面URL发生变化时执行代码?的详细内容。更多信息请关注PHP中文网其他相关文章!