window.onload未被触发

时间:2014-12-27 10:25:00

标签: javascript google-chrome-extension onload

我正在为练习编写一个chrome扩展程序,它基本上会记住您下次在网站上的密码。但是,我在运行代码时遇到问题。 window.onload,document.onload,它们都没有触发我的remember()函数。检查了其他答案,他们都没有帮助。检查它是否被网站中的实际代码覆盖,只覆盖了body.onload。这是我的代码:

window.onload = remember;

var remember = function() {
    var name = localStorage["name"];
    var pw = localStorage["pw"];

    if(pw != undefined && name != undefined) 
    {
        document.sqrl.login_username.value = name;
        document.sqrl.secretkey.value = pw;
    };

    document.sqrl.onsubmit = function() {
        localStorage["name"] = document.sqrl.login_username.value;
        localStorage["pw"] = document.sqrl.secretkey.value;
    };
};

它执行前两行,但之后没有进入函数内部,因为我在Chrome中使用调试器测试它。我的代码中缺少什么?

3 个答案:

答案 0 :(得分:1)

在范围内声明/可见之前,您正在引用该变量。做

var remember = function() {
  ...
  ...
};

window.onload = remember;

代替。小提琴 - >的 http://jsfiddle.net/9pcL3jz3/

答案 1 :(得分:1)

你有几个问题:

  • 在定义之前使用remember
  • 您的document.sqrl.login_username.valuedocument.sqrl.secretkey.value值取决于namepwnamepw取决于localStorage值, <{1}}执行are set based on your之前的其他地方objects. If you set document.sqrl.login_username.value document.sqrl sqrl.secretkey.valueonsubmit,这实际上不是问题
  • 您尝试从"name"直接访问"pw"localStorage,我相信您不能这样做。请改用getItemsetItem功能

建议代码:

var remember = function() {
    var name = localStorage.getItem("name");
    var pw = localStorage.getItem("pw");

    if(pw != undefined && name != undefined) 
    {
        document.sqrl.login_username.value = name;
        document.sqrl.secretkey.value = pw;
    };

    document.sqrl.onsubmit = function() {
        localStorage.setItem("name", document.sqrl.login_username.value);
        localStorage.setItem("pw", document.sqrl.secretkey.value);
    };
};

window.onload = remember;

编辑: 我已经阅读了Xan的评论,并在我的控制台中测试了以下代码:

localStorage["foo"] = "bar";

重新加载页面后,我检查了localStorage["foo"]的值,确实是"bar"。因此,Xan是对的,我的第三点确实无效。

答案 2 :(得分:-1)

试试这个?

 window.onload = remember;

    var remember = function() {

        var name = localStorage.name;
        var pw = localStorage.pw;

        if(pw !== undefined && name !== undefined) 
        {
            document.sqrl.login_username.value = name;
            document.sqrl.secretkey.value = pw;
        }

        document.sqrl.onsubmit = function() {
            localStorage.name = document.sqrl.login_username.value;
            localStorage.pw = document.sqrl.secretkey.value;
        };
    };