就开发chrome扩展而言,我是新手。
我正在测试扩展程序。在这里我有一个背景页面和选项页面。在选项页面中,我将用户输入的密码存储在本地存储中,我想在点击浏览器图标的后台页面中检索该密码。
我的选项页面是:
<html>
<head>
<title>Options for Password</title>
<script>
function savePassword()
{
window.localStorage.setItem('password', txtPassword.value);
}
</script>
</head>
<body >
<h1>Enter Password</h1>
<input type='password' name='txtPassword' id='txtPassword'/>
<br />
<button onclick='savePassword();'>Save</button>
<br />
</body>
</html>
我的背景页是:
<html>
<head>
<script>
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {code:"alert('password from tab:'+window.localStorage.getItem('password'));getfeedback_dialog_submitButton.setAttribute('onclick', 'if(gettext.value==\'"+window.localStorage.getItem(password)'+"\'){document.body.removeChild(getfeedbackcontainer);document.body.removeChild(getfeedbackoverlay);}');"});
});
</script>
</head>
</html>
当我通过选项页面保存密码然后我点击浏览器操作然后我从标签中获取警告密码:null 。
我很困惑如何检索存储在本地存储中的值?
答案 0 :(得分:1)
您的代码从点击浏览器操作的页面获取localStorage值,其值为null
。更改您的报价以在后台页面获取它:
chrome.tabs.executeScript(null, {code:"alert('password from tab:"+window.localStorage.getItem('password')+"');"});
请注意,这可能允许代码注入。
编辑:这样做,只要你的变量被正确定义并且window.localStorage.getItem('password')
应该是一个字符串,它就应该有效:
chrome.tabs.executeScript(null, {code:"alert('password from tab:"+window.localStorage.getItem('password')+"');"
+"getfeedback_dialog_submitButton.addEventListener('click', function(event){if(gettext.value=='"+window.localStorage.getItem('password')+"')"
+"{document.body.removeChild(getfeedbackcontainer);document.body.removeChild(getfeedbackoverlay);}},false);"});
为了便于阅读,我将代码拆分为多行。