2015-12-23 35 views
0

我想點擊一個JavaScript文件。一旦文件加載,我想將用戶重定向到登錄頁面。在登陸頁面URL評估之前調用JavaScript?

這是我的代碼:

<script type="text/javascript"> 


    document.getElementsByTagName("body").onclick = function() { 
     var js = document.createElement("script"); 
     js.type = "text/javascript"; 
     js.onload = function() { 
      window.location.href = "https://google.com/"; 
     }; 
     js.src = "((JAVASCRIPT SOURCE))"; 
     document.body.appendChild(js); 
    }; 
    </script> 

推遲着陸頁,直到腳本加載的目的,是因爲一些瀏覽器加載目標網頁腳本做之前,我需要的腳本調用用於跟蹤。它只是用來捕獲總「點擊」,如果你願意。

你能幫我弄清楚爲什麼上述不起作用嗎?我嘗試在單擊正文時調用腳本,然後在腳本加載後,使用window.open轉到着陸頁。

感謝,

+0

還,請不要使用建議如果可能的話任何的jQuery。謝謝! – Kamui

+0

有一點需要注意的是'window.open'是一個本地函數(它似乎打開一個彈出窗口而不是重定向),並且覆蓋它,除了擦除原始本地函數外,它將沒有任何行爲。也許你的意思是'window.location.href'。設置該屬性通常會導致瀏覽器重定向。 – Shashank

+0

可以肯定的是,在設置'js.src'之前和調用'appendChild'之前,我會設置'js.onload'。我不確定瀏覽器何時開始下載腳本,但如果它在配置'js.onload'之前完成,'js.onload'將不起作用。 – zvone

回答

0

所有document.getElementsByTagName()首先返回HTMLCollection

的Element.getElementsByTagName()方法返回與給定標記名稱的元素的活的HTMLCollection。

要訪問的第一要素,要能附上您的事件監聽器,你必須這樣做:

document.getElementsByTagName('body')[0].onclick = function() { ... } 

而不是document.getElementsByTagName('body')[0]你可以只使用這個速記,你已經進一步使用下:

document.body.onclick = function() { ... } 

另外,如果你的腳本放在<head>你需要用它onLoadonDOMContentLoaded

window.onload = function() { 
 
    document.body.onclick = function() { 
 
    var js = document.createElement("script"); 
 
    js.type = "text/javascript"; 
 
    js.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"; 
 
    document.body.appendChild(js); 
 
    js.onload = function() { 
 
     window.location.href = "https://www.example.com"; 
 
    }; 
 
    }; 
 
}
CLICK ME

+0

謝謝你的幫助!這對我有用。 :) – Kamui