2017-03-05 47 views
0

好了,現在我正在寫一個小的JavaScript代碼,我可以只是簡單地複製粘貼到Firefox的控制檯和運行。 (對不起,我仍然是一個大規模的菜鳥,我想寫一個小腳本,基本上,打開某個網頁,並從中收集某些div的信息。)的setTimeout太快射擊(?)

但是,我很掙扎在這一刻。我想打開某個網頁,然後在完全加載後執行某個功能。 (對於simplyfying原因,此功能只計算從0到99)

function openGroupsPage() { 

window.location.replace(groupURL); 

setTimeout(function() { 
    for (i = 0; i < 100; i++) { 
    console.log(i) 
    } 
} , 10000) 
} 


openGroupsPage() 

我的問題是:遞增功能不會被調用(或至少它看起來喜歡它,因爲我永遠不能看到任何類型的輸出在控制檯。)爲什麼我的setTimeout不工作,或者什麼是另一個選項來完成我想要做的事情?當新訪問的網站完全加載完成時,我真的很想運行一個特定的功能。

+0

那麼它不是去觸發,因爲你做的第一件事是重定向到一個新的一頁。計時器需要在「groupUrl」頁面上。 –

回答

1

當您更改位置,窗口對象及其所有關聯的事物(包括定時器)被丟棄,一個新創建的。您不能安排代碼在舊文檔中運行新文檔(甚至不能從瀏覽器控制檯運行)。在導航到新頁面之前,您不得不粘貼並執行您的代碼,這意味着您無法從代碼中導航到該頁面。

你可以看看像TamperMonkey或工具的GreaseMonkey並且使得讓你在迴應匹配特定網址的網頁加載運行代碼。

-1

你可以添加一個事件監聽要做的就是加載頁面時觸發頁面的文檔。

document.addEventListener('DOMContentLoaded' function(e) { 
    // page is loaded do you fancy stuff in here 
    // no timeout needed 
}); 

編輯:忽略了他想在隨機頁面上通過控制檯執行它。這將不起作用,因爲在locationchange上所有當前腳本都會停止並且全局對象被銷燬。

使用類似Greasemonkey了點。

0

window.location.replace()退出當前頁面,並加載一個新的。所以不再執行當前頁面的任何剩餘的JavaScript

0

你的功能運作良好,唯一的問題是window.localtion線重載你從開始設置整個頁面重新加載變得和你的頁面失去了網址的網站你功能。

嘗試下面瞭解

function openGroupsPage() { 

//window.location.replace('http://www.google.com'); 

setTimeout(function() { 
    for (i = 0; i < 100; i++) { 
    console.log(i) 
    } 
} , 1000) 
} 


openGroupsPage()