我正在为一个网站编写一个用户脚本,将链接目标从"_blank“更改为"_self”。
该网站的链接都由EventListener on Click操作处理,该操作检查每个<a>
元素的id
属性,以设置单击URL并将其加载到新的选项卡中。<a>
元素中没有一个具有href
或target
属性。
我希望所有点击链接加载在同一个选项卡(而不是一个新的选项卡)。
是否有任何方法修改事件侦听器设置的链接目标,或者简单地设置/重写网页上所有链接的默认链接目标?
发布于 2022-11-17 07:29:14
如果您想重写新选项卡中打开的链接的行为,您可以这样重写window.open
:
window.open = (open => (href => open.call(window, href, '_self')))(window.open);
对于具有显式_blank
目标的锚标记,理论上可以重写click方法以强制目标:
window.HTMLAnchorElement.prototype.click = function() { window.open(this.href, '_self') };
然而,这实际上是一个黑客解决方案,可能不是最好的想法,在生产中使用。
发布于 2022-11-17 07:20:13
您可以使用document.querySelector().target = "_self"
选择元素。
发布于 2022-11-18 05:23:09
这个问题的答案解决了我的问题:
How to overwrite a function using a userscript?
我重写了skara9 9的答案中的开放函数,然后从上面的问题中插入了addJS_Node函数。
Userscript与目标页面分离,因此简单地重新声明函数没有覆盖默认的全局打开函数。
https://stackoverflow.com/questions/74477658
复制