Получение Javascript для исключения тегов привязки в новом окне для сценария внешней ссылки - PullRequest
1 голос
/ 04 июня 2011

Я немного бью головой о стену, поскольку знаю, что ответ прост, но он ускользает от меня. У меня есть некоторый опыт программирования, но в основном с 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

Спасибо за любую помощь или потехники.

1 Ответ

0 голосов
/ 04 июня 2011

Вы всегда можете просто удалить тег привязки

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

и проверить его.Мне было бы интересно узнать, что именно равно this.excludedomains.join("|") и каким точным ссылкам он не справляется.

...