我正在为练习编写一个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中使用调试器测试它。我的代码中缺少什么?
答案 0 :(得分:1)
在范围内声明/可见之前,您正在引用该变量。做
var remember = function() {
...
...
};
window.onload = remember;
代替。小提琴 - >的 http://jsfiddle.net/9pcL3jz3/ 强>
答案 1 :(得分:1)
你有几个问题:
remember
document.sqrl.login_username.value
和document.sqrl.secretkey.value
值取决于name
和pw
,name
和pw
取决于localStorage
值, <{1}}执行are set based on your
之前的其他地方objects. If you set document.sqrl.login_username.value
document.sqrl sqrl.secretkey.value
和onsubmit
,这实际上不是问题"name"
直接访问"pw"
和localStorage
,我相信您不能这样做。请改用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是对的,我的第三点确实无效。
答案 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;
};
};