窗口加载未触发
window.onload is not fired
我正在写一个用于练习的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 中使用调试器对其进行了测试。我的代码中缺少什么?
在变量在作用域中声明/可见之前,您正在引用该变量。做
var remember = function() {
...
...
};
window.onload = remember;
相反。小提琴 -> http://jsfiddle.net/9pcL3jz3/
您有几个问题:
- 在定义之前使用
remember
- 您的
document.sqrl.login_username.value
和document.sqrl.secretkey.value
值取决于name
和pw
,name
和pw
依赖于localStorage
值,而这些值又are set based on your
document.sqrl在执行onsubmit
之前objects. If you set document.sqrl.login_username.value
并sqrl.secretkey.value
其他地方,那么这实际上不是问题 - 您尝试直接从
localStorage
访问"name"
和"pw"
,我相信您不能这样做。请改用getItem
和setItem
函数
建议代码:
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 是对的,我的第三点确实无效。
试试这个?
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扩展:加载窗口后执行脚本
- 在IE7中加载窗口
- jQuery加载窗口,同时等待长函数完成
- 如何在加载时将加载窗口添加到 sencha 中的图表
- 想要在加载窗口上计算字符数
- 如何在加载窗口后加载图像
- 弹出加载窗口
- 防止在重新加载窗口时看到选项卡
- 加载窗口时采取措施
- Don'如果href有#,则不希望加载窗口
- 使用Javascript,如何在单击下载文件的链接后1秒重新加载窗口
- 加载窗口大小问题
- 提交后弹出.显示加载窗口或请等待
- 我应该从哪里调用警报框,加载窗口-控制器或服务
- 如果内容是动态的,如何在打开窗口后重新加载窗口
- 在iframe内加载窗口
- 执行jquery函数后,图像已加载窗口调整大小
- 通过X按钮和加载窗口事件关闭弹出窗口
- IE和JavaScript:调整大小时重新加载窗口
- 单击后可以加载窗口吗