#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, поэтому могу ошибаться.