Ниже приведен код из плагина для Joomla. Он работает сам по себе, и его цель состоит в том, чтобы обнаруживать внешние ссылки на странице и вводить их в новые окна браузера с помощью _blank.
Я пытался около часа (я плохо знаю javascript), но я не могу понять, как заставить работать функцию onclick.
Конечный результат, я хочу добавить в этот скрипт возможность диалогового окна подтверждения, показанного во втором разделе кода.
При нажатии на внешнюю ссылку откроется диалоговое окно подтверждения, и, если оно скажет «да», они смогут перейти на внешний URL-адрес, открыв его в новом окне. В противном случае он отменяет и ничего не делает.
Когда я создаю ссылку с
onclick="return ExitNotice(this.href);"
внутри нее, она отлично работает, но, поскольку на моем веб-сайте есть несколько человек, отправляющих информацию, я бы хотел, чтобы окно подтверждения было глобальным.
this.blankwin = function(){
var hostname = window.location.hostname;
hostname = hostname.replace("www.","").toLowerCase();
var a = document.getElementsByTagName("a");
this.check = function(obj){
var href = obj.href.toLowerCase();
return (href.indexOf("http://")!=-1 && href.indexOf(hostname)==-1) ? true : false;
};
this.set = function(obj){
obj.target = "_blank";
obj.className = "blank";
};
for (var i=0;i<a.length;i++){
if(check(a[i])) set(a[i]);
};
};
this.addEvent = function(obj,type,fn){
if(obj.attachEvent){
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn](window.event );}
obj.attachEvent('on'+type, obj[type+fn]);
} else {
obj.addEventListener(type,fn,false);
};
};
addEvent(window,"load",blankwin);
Вторая часть
/* ----------
OnClick External Link Notice
---------- */
function ExitNotice(link,site,ltext) {
if(confirm("-----------------------------------------------------------------------\n\n" +
"You're leaving the HelpingTeens.org website. HelpingTeens.org\ndoes not " +
"control this site and its privacy policies may differ\nfrom our own. " +
"Thank you for using our site.\n\nYou will now access the following link:\n" +
"\n" + link + "\n\nPress \'OK\' to proceed, or press \'Cancel\' to remain here." +
"\n\n-----------------------------------------------------------------------"))
{
return true;
}
history.go(0);
return false;
}
А) Может кто-нибудь помочь мне решить эту проблему?
или Б) Есть ли лучшее решение?