Kichrum's Blog|

Понедельник, 27 октября, 2008

JavaScript: externals без rel

22:18, Папка: Программирование/, Метки: [] [] []

Написал такой вот скриптик для людей, которые не дружат с target и rel одновременно. Он находит на странице все внешние ссылки. Когда пользователь кликнет по ним, он получает предупреждение, что на том сайте могут быть вирусы и т.п. и типа он переходит на свой страх и риск (как В Контакте). Текст сообщений, естественно, можно менять.

Итак, код :

<script language="">
// 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="">
// 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>

Пользуйтесь на здоровье :)

« Хранить деньги в банке опасно? Если в бронированной, то нет! | Звезды, рельсы, поезда… »

Поделись статьей с друзьями:

в Твиттере, в Контакте, в Facebook и в Живом Журнале

Ещё в тему:

7 комментариев к этой писанине »

  1. Комментарий оставил(а) MrGALL 27 октября 2008 г. (Понедельник) в 23:58

    ІМХО питати користувача, чи вони хочуть покинути сайт, це вже занадто…
    Я б на такий сайт більше не зайшов би або заблокував би на ньому javascript.

    Віруси, трояни та все інше то проблеми користувачів, які користуються небезпечним софтом (наприклад ІЕ, Outlook і т.п.)

  2. Комментарий оставил(а) Kichrum 28 октября 2008 г. (Вторник) в 01:08

    Так тебе второй вариант не понравился, или оба? (В том числе и то, что установлено у меня сейчас)

    P.S. ВКонтакте не крут? :(

  3. Комментарий оставил(а) MrGALL 28 октября 2008 г. (Вторник) в 01:29

    Мені не подобається сама ідея питати користувача, чи дійсно він хоче щось зробити (крім випадків, коли його дії можуть мати критичні налідки).
    Перехід за лінками це основна особливість вебу і штучно її обмежувати це дуже погана ідея…

    Вконтакті звісно не крутий (мені більше подобається Facebook, але ми не його обговорюємо), до того ж навіть та його фіча не врятувала від вірусних епідемій влітку.

  4. Комментарий оставил(а) Snack 28 октября 2008 г. (Вторник) в 09:11

    Та да… Это уже “занадто”. Достаточно было бы target=”_blank” использовать, и насрать на стандарты.

    PS. Блин, зачем я тебе показал сколько ошибок у тебя на сайте валидатор находит :)

  5. Комментарий оставил(а) Kichrum 28 октября 2008 г. (Вторник) в 10:01

    Та мне наплевать на ошибки в блоге. Я их исправлять не собираюсь. Я просто думаю о будущих проектах. К тому ж хочется джаваскрипт немножко освоить.

    Убрал запрос… Просто открывается в фоновой вкладке. Раз уж читатели так решили =)

  6. Комментарий оставил(а) potapuff 10 ноября 2008 г. (Понедельник) в 10:01

    Поставь какой-нибуть типограф для форматирования и подсветки кода. Когда его будеть больше – совсем неудобно читать будет.

  7. Здесь продолжение темы: Kichrum's Blog 5 января 2009 г. (Понедельник) в 23:08

    По вашим заявкам…

    По замечанию моего преподавателя программирования, высказанному комментарием к этому посту, поставил подсветку синтаксиса кода. В той ж….

Подпишись на RSS и получай оперативно новые статьи, комменты к этой записи или сразу все комментарии блога!

Выскажись!

© Пашко Сергей, 2008—2012. Все права защищены

Желанная упругость.
Kichrum's BlogKichrum