Javascript 尝试替换文档上的每个href
我对Javascript一无所知,我想创建一个Greasemonkey脚本,在文档的所有href元素上将“/text/othertext/”替换为“/text2/text3”。这就是我想到的,正如预期的那样,它不起作用:Javascript 尝试替换文档上的每个href,javascript,Javascript,我对Javascript一无所知,我想创建一个Greasemonkey脚本,在文档的所有href元素上将“/text/othertext/”替换为“/text2/text3”。这就是我想到的,正如预期的那样,它不起作用: var links=document.getElementsByTagName('a'); 对于(i=0;i我不太确定为什么代码不能工作 我已经整理了下面的片段,这可能会有所帮助 (函数(){ var-anchors=document.querySelectorAll('a
var links=document.getElementsByTagName('a');
对于(i=0;i我不太确定为什么代码不能工作
我已经整理了下面的片段,这可能会有所帮助
(函数(){
var-anchors=document.querySelectorAll('a');
对于(var i=0;i
a{
显示:块;
}
此代码有效。您的代码看起来也不错。也许您是在文档元素之前加载脚本?请注意我的元素是如何在脚本之前列出的:
<a href="before">link</a>
<a href="before">link</a>
<script>
var links = document.getElementsByTagName('a');
for(var i = 0; i < links.length; i++) {
var href = links[i].getAttribute('href');
href = href.replace('before', '#');
links[i].setAttribute('href', href);
}
</script>
最简单的解决方案是将代码包装为:
window.onload = function(){
/* your code here */
};
这将确保在加载整个页面(包括文本、图像等)之前,不会加载您的代码(特别是如果您已将脚本放置在文档的中)。
window.onload=function(){
document.body.innerHTML=document.body.innerHTML
.替换('
它对我有效:。加载DOM后是否运行脚本,例如在窗口中。onload
?我尝试将其作为Greasemonkey脚本运行,我尝试通过添加警报(gethref)对其进行调试;显然,它并没有在页面上存储所有链接,可能只是firefox阻止了垃圾邮件警报…link
元素还使用href
指向样式表等资源,不确定其他人也做了什么。这就是我需要替换的示例:
我需要将“.”替换为“.”尝试使用window.onload=function(){var anchors=document.queryselectoral('a');for(var i=0;i
链接仍然没有改变,如果我能得到任何帮助,我愿意提供我的skype来共享桌面…嘿@Manuestaire,你的脚本文件在哪里加载到DOM?我个人会避免窗口。onload
并使用我在生活中编写的代码。(安全包装功能)这样它就可以运行了。但是,请确保你的脚本标记是所有链接之后正文中的最后一个元素。希望这能帮助你。也尝试过了,链接仍然没有改变…(我正在修补,如果有人感兴趣,我可以流式传输我的screan throw twitch)@Manuestaire请现在重试(添加了窗口。onload
).好的,我知道我遗漏了什么,你能看一下我的编辑吗?@Manuestaire我相信你的编辑让这个问题变得更复杂。似乎你需要倾听DOM本身的变化,所以也许这篇文章可以帮助你解决这个问题:我想这超出了我的范围,我已经尝试了setInterval(function(){var锚定……,2000)
尽管脚本持续运行,但它似乎不会更改下拉菜单出现时出现的新元素。是否将在DOM changes help(DOM更改帮助)中侦听?@ManueStare如果您只想在页面加载后延迟,请使用setTimeout
方法。请参阅我的编辑。如果在下拉菜单出现后发生这种情况,请侦听DOM命令ges可能是您最有效的计时方式。否则,您可能会导致不必要的延迟,或者更糟糕的是,由于您使用了超时,并且发生得太早,因此错过了事件。
window.onload = function(){
/* your code here */
};