簡體   English   中英

Javascript onunload

[英]Javascript onunload

我已編寫了大部分此腳本,但我知道我缺少一個關鍵要素。

我需要調用函數(見下文)...

function InternalLink() {
Page_ShowPopOnExit = false;
}

...在內部的if / else語句中(請參見下面的代碼)來檢測單擊的是內部鏈接,而不是頁面關閉/外部鏈接。

    function LinkConvert() {
var href;
                var anchors = document.getElementsByTagName('a');

                for(var y=0; y<anchors.length; y++)
                {
                                href = anchors[y].href.toLowerCase();
                                if (!(href.indexOf("http://")!=-1 && href.indexOf(MySiteDomain)==-1))
                                                {
                                                anchors[y].clickhandler=InternalLink()
                                                XBrowserAddHandlerPops(anchors[y],"click","clickhandler");
                                                }
                }
}

以下是( 最新的 )總代碼,Ty幫助我完成了代碼(或修復了它:)

function exitwindow() {
var Page_ShowPopOnExit=true;
var MySiteDomain='www.example.com';
var url = '/exit.html';
var win = 'toolbar=0,directories=0,menubar=0,scrollbars=0,resizable=0,width=250,height=300';
if (Page_ShowPopOnExit==true){
   open(url,'WindowName',win);
   } else (Page_ShowPopOnExit==false)
   {alert('Internal Link')}
}

function InternalLink() {
  Page_ShowPopOnExit = false;
}

function LinkConvert() {
var href;
                var anchors = document.getElementsByTagName('a');

                for(var y=0; y<anchors.length; y++)
                {
                                href = anchors[y].href.toLowerCase();
                                if (!(href.indexOf("http://")!=-1 && href.indexOf(MySiteDomain)==-1))
                                                {
                                                anchors[y].clickhandler=InternalLink()
                                                XBrowserAddHandlerPops(anchors[y],"click","clickhandler");
                                                }
                }
}
function XBrowserAddHandlerPops(target,eventName,handlerName) {
  if ( target.addEventListener ) {
    target.addEventListener(eventName, function(e){target[handlerName](e);}, false);
  } else if ( target.attachEvent ) {
    target.attachEvent("on" + eventName, function(e){target[handlerName](e);});
  } else {
    var originalHandler = target["on" + eventName];
    if ( originalHandler ) {
      target["on" + eventName] = function(e){originalHandler(e);target[handlerName](e);};
    } else {
      target["on" + eventName] = target[handlerName];
    }
  }
}

當您的訪問者單擊鏈接到其他域的鏈接時,您想從代碼中進行猜測。

如果鏈接URL看起來像內部鏈接(不存在“ http://”或存在域),則當前您的代碼通過在所有鏈接上附加onclick處理程序來實現此目的。 然后,它將boolean Page_ShowPopOnExit設置為false,這將防止在調用彈出窗口鈎子時生成彈出窗口( exitwindow在示例代碼中未調用該exitwindow

我認為有一種更簡單的方法。 即只需附加一個onclick處理程序,該處理程序彈出一個不是內部鏈接的每個鏈接:

function createPopup() {
    var url = '/exitexample.html';
    var win ='toolbar=0,directories=0,menubar=0,scrollbars=0,resizable=0,width=250,height=300';
    open(url,'WindowName',win);
}

var anchors = document.getElementsByTagName('a');
for(var y=0; y<anchors.length; y++) {
    href = anchors[y].href.toLowerCase();
    if (href.indexOf("http://") !== -1 && href.indexOf(MySiteDomain) !==-1) {
        anchors[y].onclick = createPopup; // you might want to replace this with attachEventListener etc.
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM