Получение Javascript для опускания тегов привязки в новом окне для скрипта внешней ссылки

#javascript #hyperlink #external #anchor

#javascript #гиперссылка #внешний #привязка

Вопрос:

Я немного бился головой о стену, поскольку знаю, что ответ прост, но он ускользает от меня. У меня есть некоторый опыт программирования, но в основном с PHP. Я наткнулся на случай, когда сайту, над которым я работаю, понадобился скрипт для автоматического обнаружения внешних ссылок и открытия их в новом окне. Я нашел 2 отдельных кода javascript, и они прекрасно работают, но проблема в том, что там, где есть тег привязки, такой как href= «#B», код считает это внешней ссылкой. Я провел значительное исследование и попытался выполнить функции indexOf и endWith (), но ни одна из них не игнорирует ссылку, которая имеет букву # (т. Е. #B).

Было бы здорово, если бы я мог получить дополнительную помощь или указания. Смотрите приведенный ниже код, который я нашел в сети:

 assigntarget:function(){
var rexcludedomains=new RegExp(this.excludedomains.join("|"), "i")
var all_links=document.getElementsByTagName("a")
if (this.mode=="auto" || (this.mode=="manual" amp;amp; this.togglebox.checked)){
    for (var i=0; i<=(all_links.length-1); i  ){
        if (all_links[i].hostname.search(rexcludedomains)==-1 amp;amp;  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 amp;amp;  all_links[i].href.indexOf("#") ==-1 amp;amp; all_links[i].href.indexOf("http://") !=-1)
            all_links[i].target=ddwindowlinks.linktarget
  

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

Комментарии:

1. Каково значение этого.excludedomains?

2. Энни права. Находится ли текущий сайт, на котором вы находитесь, в исключенных доменах? # обычно переводится в http://siteyouareon.com/pageyouareon.html#....

3. значение равно — excludedomains: [«yourdomain.com «, «google.com «], Я пробовал #B и я пробовал # в исключенных доменах, но это все еще не работает. Я использую WordPress, и я не уверен, имеет ли это какое-либо отношение к этому. Все якоря шаблонов WordPress, которые я использую, хороши, например, якорь, который возвращает страницу обратно в начало. Но словарь терминов, который я использую с тегов привязки другого сайта, распознается как внешние ссылки.

Ответ №1:

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

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

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

Комментарии:

1. Они предварительно установлены вверху. Вы можете вручную настроить домены для сбоя. var ddwindowlinks={ //1) Введите домены, которые будут ИСКЛЮЧЕНЫ из открытия в новом окне: исключенные домены: [«yourdomain.com «, «google.com «],’

2. Если я правильно это читаю, это приведет только к удалению специального символа / # . Я не думаю, что это сработает. поскольку все равно будет href=B, в котором код будет думать, что это тоже внешняя ссылка. Еще раз поймите, я не настолько знаком с синтаксисом Javascript, поэтому могу ошибаться.