JavaScript: externals без rel
Написал такой вот скриптик для людей, которые не дружат с target и rel одновременно. Он находит на странице все внешние ссылки. Когда пользователь кликнет по ним, он получает предупреждение, что на том сайте могут быть вирусы и т.п. и типа он переходит на свой страх и риск (как В Контакте). Текст сообщений, естественно, можно менять.
Итак, код JavaScript:
<script language="JavaScript"> // www.kichrum.org.ua No rights reserved. function external() { for (i in document.links) { link = document.links[i]; if (link.href && link.href.indexOf('http://')==0 && link.href.indexOf('kichrum.org.ua')==-1) { link.onclick = onExternalLinkActivate; link.onkeypress = onExternalLinkActivate; } } } function onExternalLinkActivate() { if (confirm("Вы покидаете мой сайт по внешней ссылке.\nЯ не несу ответственности за содержимое сайта, содержащегося по этой ссылке.\nОн может содержать вирусы, трояны и другие вредоносные программы, опасные для Вашего компьютера. Если у Вас нет серьезных оснований доверять этому сайту, лучше всего на него не переходить и нажать Отмена.\nЕсли Вы не передумали, нажмите ОК.")) window.open(this.href); return false; } window.onload = external; </script>
Достаточно вставить на все страницы вашего сайта.
И еще один вариант – различаем external и внешние без rel (как бы проверенные).
Если external – скрипт предупредит и откроет в новом окне. Если же ссылка проверена – спросит, в новом или в этом же окне открывать.
<script language="JavaScript"> // www.kichrum.org.ua No rights reserved. function external() { for (i in document.links) { link = document.links[i]; if (link.href && link.href.indexOf('http://')==0 && link.href.indexOf('kichrum.org.ua')==-1) if (link.rel && link.rel.indexOf('external')!=-1) { link.onclick = onExternalLinkActivate; link.onkeypress = onExternalLinkActivate; } else { link.onclick = onApprovedLinkActivate; link.onkeypress = onApprovedLinkActivate; } } } function onExternalLinkActivate() { if (confirm("Вы покидаете Kichrum's Blog по внешней ссылке.\nАвтор блога (Kichrum) не несет ответственности за содержимое этого сайта.\nОн может содержать вирусы, трояны и другие вредоносные программы, опасные для Вашего компьютера. Если у Вас нет серьезных оснований доверять этому сайту, лучше всего на него не переходить.\n\nЕсли Вы еще не передумали, нажмите ОК.\nЕсли Вы не хотите рисковать своей безопасностью, нажмите Отмена.")) window.open(this.href); return false; } function onApprovedLinkActivate() { if (confirm("Вы пытаетесь перейти по внешней ссылке.\n\nЕсли Вы хотите ПОКИНУТЬ Kichrum's Blog и перейти по ссылке, нажмите ОК.\nЧтоб открыть ее в новом окне, нажмите Отмена.")) window.location=this.href; else window.open(this.href); return false; } window.onload = external; </script>
Пользуйтесь на здоровье :)








ІМХО питати користувача, чи вони хочуть покинути сайт, це вже занадто…
Я б на такий сайт більше не зайшов би або заблокував би на ньому javascript.
Віруси, трояни та все інше то проблеми користувачів, які користуються небезпечним софтом (наприклад ІЕ, Outlook і т.п.)
Так тебе второй вариант не понравился, или оба? (В том числе и то, что установлено у меня сейчас)
P.S. ВКонтакте не крут? :(
Мені не подобається сама ідея питати користувача, чи дійсно він хоче щось зробити (крім випадків, коли його дії можуть мати критичні налідки).
Перехід за лінками це основна особливість вебу і штучно її обмежувати це дуже погана ідея…
Вконтакті звісно не крутий (мені більше подобається Facebook, але ми не його обговорюємо), до того ж навіть та його фіча не врятувала від вірусних епідемій влітку.
Та да… Это уже “занадто”. Достаточно было бы target=”_blank” использовать, и насрать на стандарты.
PS. Блин, зачем я тебе показал сколько ошибок у тебя на сайте валидатор находит :)
Та мне наплевать на ошибки в блоге. Я их исправлять не собираюсь. Я просто думаю о будущих проектах. К тому ж хочется джаваскрипт немножко освоить.
Убрал запрос… Просто открывается в фоновой вкладке. Раз уж читатели так решили =)
Поставь какой-нибуть типограф для форматирования и подсветки кода. Когда его будеть больше – совсем неудобно читать будет.
По вашим заявкам…
По замечанию моего преподавателя программирования, высказанному комментарием к этому посту, поставил подсветку синтаксиса кода. В той ж….