【问题标题】:Getting Javascript to omit anchor tags in new window for external link script让Javascript在新窗口中省略外部链接脚本的锚标记
【发布时间】: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


【解决方案1】:

你总是可以去掉锚标签

var str = str.replace(/#.*$/, "")

并对此进行测试。不过,我很想知道this.excludedomains.join("|") 到底是什么以及它失败的确切链接。

【讨论】:

  • 那些预设在顶部。您可以手动设置域以使其失败。 var ddwindowlinks={ //1)输入要在新窗口中打开时排除的域:excludedomains: ["yourdomain.com", "google.com"],'
  • 如果我没看错,它只会删除特殊字符 /# 。我认为这行不通。因为仍然会有 href=B ,其中代码也会认为这是一个外部链接。再次了解我对 Javascript 语法不太熟悉,所以我可能是错的。
猜你喜欢
  • 2013-08-16
  • 2014-06-24
  • 2016-01-22
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多