在继续执行JavaScript之前等待页面加载

时间:2017-08-10 07:45:07

标签: javascript tampermonkey

我是JavaScript新手并试图让这个Tampermonkey脚本正常工作。当从一个页面收集数据时,脚本工作得很好。但是,我现在希望它像以前一样收集数据,然后转到另一个页面并继续收集数据。

我的代码:

$(document).ready(function() {
    $("#getData").click(function() {
        // Part 1. Collect data and move on
        window.location.href = goToURL;
        // Part 2. Collect more data when the page has fully loaded
    });
});

我已经厌倦了将代码的第2部分放入其中:

setTimeout(function() {
}, 5000);

window.onload = function(){
};

但我无法让代码工作,它可以在页面加载之前执行,或者看起来根本不执行。我错过了什么?

1 个答案:

答案 0 :(得分:1)

当您使用location.href更改页面时,将重新加载您的JS。因此,您需要一种在页面更改之间存储数据的方法。我建议使用LocalStorage 您的代码如下:

function storeState(state){
    localStorage.setItem('state', state);
}

function loadState(state){
    return localStorage.getItem('state');
}

$(document).ready(function() {
    var state = getState();
    $("#getData").click(function() {
        // Collect data and put it into state
        storeState(/* your collected state*/)
        window.location.href = goToURL;
    });
});

请注意,您必须执行一些序列化/反序列化操作,因为localStorage只保存字符串 同样如@charlietfl所述,如果你有不同的域,它将导致更多的困难