【发布时间】:2011-09-08 04:51:47
【问题描述】:
我一直在碰壁,因为我知道答案很简单,但它让我无法理解。我有一些编程经验,但主要是 PHP。我遇到了一个实例,我正在处理的网站需要一个脚本来自动检测外部链接并在新窗口中打开它们。我发现了 2 个单独的 javascript 代码,它们工作得很好,但问题是有一个锚标记,例如 href="#B" 代码认为这是一个外部链接。我进行了大量研究并尝试使用 indexOf 和 endWith() 函数,但都没有忽略带有#letter(即#B)的链接。
如果我能得到一些进一步的帮助或指点,那就太好了。见下面我在网上找到的代码:
assigntarget:function(){
var rexcludedomains=new RegExp(this.excludedomains.join("|"), "i")
var all_links=document.getElementsByTagName("a")
if (this.mode=="auto" || (this.mode=="manual" && this.togglebox.checked)){
for (var i=0; i<=(all_links.length-1); i++){
if (all_links[i].hostname.search(rexcludedomains)==-1 && all_links[i].href.indexOf("http:")!=-1)
all_links[i].target=ddwindowlinks.linktarget
}
}
else{
for (var i=0; i<=(all_links.length-1); i++)
all_links[i].target=""
}
现在我已经尝试使用上面提到的索引来查找 # 是否存在于链接中,如下所示:
for (var i=0; i<=(all_links.length-1); i++){
if (all_links[i].hostname.search(rexcludedomains)==-1 && all_links[i].href.indexOf("#") ==-1 && all_links[i].href.indexOf("http://") !=-1)
all_links[i].target=ddwindowlinks.linktarget
感谢您的任何帮助或补充。
【问题讨论】:
-
this.excludedomains 的值是多少?
-
安妮说得有道理。您所在的当前站点是否在排除域中? A # 通常被翻译成
http://siteyouareon.com/pageyouareon.html#.... -
值是 - excludedomains: ["yourdomain.com", "google.com"],我在排除的域中尝试了 #B 和 #,但它仍然没有。我正在使用 wordpress,我不确定这是否与它有关。我使用的所有 wordpress 模板锚都很好,例如将页面带回顶部的锚。但是我从另一个站点的锚标记中使用的术语表被识别为外部链接。
标签: javascript hyperlink external anchor