窗口.位置.href 更改时的事件
2022-08-30 04:21:16
我正在为一个网站编写一个Greasemonkey脚本,该脚本在某些时候会修改.location.href
当页面上发生更改时,我如何获得事件(通过或类似内容)?我还需要访问指向新的/修改的URL的文档的DOM。window.addEventListener
window.location.href
我见过其他涉及超时和轮询的解决方案,但如果可能的话,我想避免这种情况。
我正在为一个网站编写一个Greasemonkey脚本,该脚本在某些时候会修改.location.href
当页面上发生更改时,我如何获得事件(通过或类似内容)?我还需要访问指向新的/修改的URL的文档的DOM。window.addEventListener
window.location.href
我见过其他涉及超时和轮询的解决方案,但如果可能的话,我想避免这种情况。
我在我的扩展“Grab Any Media”中使用此脚本并正常工作(如youtube案例) )
var oldHref = document.location.href;
window.onload = function() {
var bodyList = document.querySelector("body")
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (oldHref != document.location.href) {
oldHref = document.location.href;
/* Changed ! your code here */
}
});
});
var config = {
childList: true,
subtree: true
};
observer.observe(bodyList, config);
};
当活动历史记录条目更改时,将触发 popstate 事件。[...]popstate 事件只能通过执行浏览器操作来触发,例如单击后退按钮(或在 JavaScript 中调用 history.back() )
因此,在 使用 时侦听事件并发送事件应该足以对更改采取措施:popstate
popstate
history.pushState()
href
window.addEventListener('popstate', listener);
const pushUrl = (href) => {
history.pushState({}, '', href);
window.dispatchEvent(new Event('popstate'));
};