Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让Javascript在外部链接脚本的新窗口中忽略锚定标记_Javascript_Hyperlink_External_Anchor - Fatal编程技术网

让Javascript在外部链接脚本的新窗口中忽略锚定标记

让Javascript在外部链接脚本的新窗口中忽略锚定标记,javascript,hyperlink,external,anchor,Javascript,Hyperlink,External,Anchor,我知道答案很简单,但我一直想不通。我有一些编程经验,但主要是PHP。我遇到了一个实例,其中我正在处理的一个站点需要一个脚本来自动检测外部链接并在新窗口中打开它们。我发现了两个独立的javascript代码,它们工作得很好,但问题是其中有一个锚定标记,如href=B。代码认为这是一个外部链接。我做了重要的研究,并尝试使用indexOf和endWith函数,但都没有忽略带有字母I.e.B的链接 如果我能得到进一步的帮助或指点,那就太好了。请参阅我在网上找到的以下代码: assigntarget:fu

我知道答案很简单,但我一直想不通。我有一些编程经验,但主要是PHP。我遇到了一个实例,其中我正在处理的一个站点需要一个脚本来自动检测外部链接并在新窗口中打开它们。我发现了两个独立的javascript代码,它们工作得很好,但问题是其中有一个锚定标记,如href=B。代码认为这是一个外部链接。我做了重要的研究,并尝试使用indexOf和endWith函数,但都没有忽略带有字母I.e.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

感谢您的帮助和帮助。

您可以随时去掉锚定标签

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

并对其进行测试。我很想看看这个.excludedomains.join | equals到底是什么,以及它失败的确切链接。

这个.excludedomains的价值是什么?安妮有一个观点。您当前所在的站点是否在排除的域中?A通常被翻译成http://siteyouareon.com/pageyouareon.html....value is-excludeddomains:[yourdomain.com,google.com],我试过B,在被排除的域中也试过,但仍然没有。我正在使用wordpress,我不确定这是否与它有关。我使用的所有wordpress模板锚都很好,比如将页面带回顶部的锚。但是我在另一个网站的锚定标签中使用的术语表被认为是外部链接,它们是在顶部预设的。您可以手动为其设置域以使其失败。var ddwindowlinks={//1要排除在新窗口中打开的域名:excludeddomains:[yourdomain.com,google.com],“如果我读得正确,它只会删除特殊字符/。我认为这不会起作用。因为仍然会有href=B,代码会认为这也是一个外部链接。再次理解,我对Javascript语法不太熟悉,所以我可能错了。