2017-03-15 40 views
0

我想加載stackoverflow page,然後提高警覺,嚴格一前一後,不使用框架如jQuery等 我已經通過了解答和here參觀this了。提高警覺完全

我在瀏覽器控制檯中運行以下內容。 頁面加載但不會引發警報。我在Windows 8.1中使用chrome。

嘗試#1:

window.location.href = 'https://stackoverflow.com/'; 
window.onload = function() { alert("It's loaded!") } 

嘗試#2:

window.location.href = 'https://stackoverflow.com/'; 
if(document.readyState === "complete") { 
    //Already loaded! 
    window.onload = function() { alert("It's loaded!") } 
} 
else { 
    //Add onload or DOMContentLoaded event listeners here: for example, 
    window.addEventListener("onload", function() {/* your code here */}, false); 
    //or 
    //document.addEventListener("DOMContentLoaded", function() {/* code */}, false); 
} 

嘗試#3:

window.location.href = 'https://stackoverflow.com/'; 
var everythingLoaded = setInterval(function() { 
    if (/loaded|complete/.test(document.readyState)) { 
    clearInterval(everythingLoaded); 
    alert("It's loaded!"); 
    } 
}, 1000); 

嘗試#4:

試過的setTimeout()太但也不起作用。

我也嘗試過上面的例子window.location.replace()

我該如何做這項工作?

P.S:我是JavaScript的新手。上面的代碼不是我的,但我只是想解決它們。我並沒有聲稱完全理解他們。

+1

我不認爲像這樣的東西可以工作。當您將另一個頁面加載到窗口中時,當前頁面中的所有腳本都將停止運行。 – Barmar

+0

你的目標是什麼?有些事情可能會或可能不會工作。 –

+0

@MarcRohloff:我的目標類似於輸入用戶名並在gmail登錄頁面點擊'next'。請求密碼的頁面完全加載後輸入密碼並提交。所有這一切都在JavaScript中完成。點擊「下一步」後,我無法提醒您。 –

回答

0

正如Barmar指出的那樣,這是不可能的。新的頁面加載將從舊頁面中刪除所有的JavaScript。一些替代品:

  • 您可以使用window.open API打開新的頁面或在新標籤並附加一個事件處理程序。

  • 您可以將頁面加載到一個框架中(如果它沒有任何限制來阻止)並向框架添加加載事件。

  • 您可以使用XMLHttpRequest(或您選擇的庫)加載頁面,並將結果插入<div>,儘管不是所有的都可能工作。

一旦頁面加載完畢,你就不會說你想要做什麼。在大多數情況下(通常除非您擁有第二頁),否則將無法訪問第二頁上的任何信息。

+1

如果XMLHttpRequest不是同一個域,那麼它將不起作用,除非服務器發送一個'Access-Control-Allow-Origin'頭。 – Barmar