首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.onload未触发

window.onload未触发
EN

Stack Overflow用户
提问于 2014-12-27 18:25:00
回答 3查看 625关注 0票数 0

我正在写一个用于练习的chrome扩展,它基本上就是下次在网站上记住你的密码。但是,我在运行代码时遇到了一个问题。window.onload,document.onload,它们都不是激发我的remember()函数。我查了其他答案,没有一个能帮上忙。检查它是否被网站中的实际代码覆盖,只有body.onload被覆盖。下面是我的代码:

代码语言:javascript
复制
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中使用调试器对其进行了测试。我的代码中缺少什么?

EN

回答 3

Stack Overflow用户

发布于 2014-12-27 18:38:35

在作用域中声明/可见变量之前,您正在引用该变量。做

代码语言:javascript
复制
var remember = function() {
  ...
  ...
};

window.onload = remember;

而不是。小提琴->

票数 1
EN

Stack Overflow用户

发布于 2014-12-27 19:05:47

您有几个问题:

  • 您在定义remember之前使用
  • 您的document.sqrl.login_username.valuedocument.sqrl.secretkey.value值取决于namepw,D9和D10取决于D11值,而D11值又取决于D12文档。turn D13和D14在onsubmit执行之前的其他地方,那么这实际上不是问题
  • 您尝试从localStorage直接访问D18和"pw",我相信您不能这样做。使用getItemsetItem函数代替

建议的代码:

代码语言:javascript
复制
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的评论,并在我的控制台中测试了以下代码:

代码语言:javascript
复制
localStorage["foo"] = "bar";

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

票数 1
EN

Stack Overflow用户

发布于 2014-12-27 18:31:09

尝尝这个?

代码语言:javascript
复制
 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;
        };
    };
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27666344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档