谷歌选项页面未保存-Javascript
Google options Page not saving - Javascript
嘿,伙计们,我现在正在构建一个扩展,现在我被困在谷歌选项页面上了。我创建了一个HTML表单options.js、manifest.json和options.HTML。我遇到的问题是将数据保存到本地存储。我收到以下错误:
未捕获的范围错误:超过了最大调用堆栈大小。
我将感谢您的帮助:)还有人可以给我指一个教程的方向,该教程展示了如何访问页面的特定元素或如何触发&多次执行网页事件。谢谢>我的代码如下:
选项HTML-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>User Details Page</title>
</head>
<body>
<div>
<h1>Welcome to Project Hercules</h1>
</div>
<div>
<h4>Below is a form, please enter in all the relevant details</h4>
</div>
<div id="status"></div>
<div>
<form>
<fieldset>
<h1>THE FORM</h1>
<legend>Personal Details</legend>
First Name:<br>
<input type="text" name="firstName">
<br>
Surname:<br>
<input type="text" name="surName">
<br>
1st Line of Address:<br>
<input type="text" name="address1">
<br>
City:<br>
<input type="text" name="city">
<br>
PostCode:<br>
<input type="text" name="postCode">
<br>
Email:<br>
<input type="email" name="userEmail">
<br>
Mobile Number:<br>
<input type="tel" name="userMOB">
<br>
</fieldset>
<br>
<fieldset>
<h2>PayPal</h2>
<br>
<legend>PayPal Email & Password</legend>
Email:<br>
<input type="email" name="payEmail">
<br>
Password:<br>
<input type="password" name="payPass">
<br>
<button id="save">Save</button>
<br>
<button id="wipe">Wipe</button>
<br>
</fieldset>
</form>
</div>
<script src="options.js"></script>
</body>
</html>
Options.js
function save_options(){
//this extracts data from the document(optionsPage) and sets them as variables
var firstName = document.getElementsByName('firstName').value;
var surName = document.getElementsByName('surName').value;
var addressF = document.getElementsByName('address1').value;
var userCity = document.getElementsByName('city').value;
var postCode1 = document.getElementsByName('postCode').value;
var email1 = document.getElementsByName('userEmail').value;
var mobile = document.getElementsByName('userMOB').value;
var payPEmail = document.getElementsByName('payEmail').value;
var payPassword = document.getElementsByName('payPass').value;
//sets variables within the object using variables defined in the function
chrome.storage.local.set({
savedFirstName: firstName,
savedSurName: surName,
savedAddress: addressF,
savedCity: userCity,
savedPostCode: postCode1,
savedEmail: email1,
savedMobile: mobile,
savedPaypal: payPEmail,
savedPayPass: payPassword
}, function update(){
//updates the user that their details have been saved
var status = document.getElementById('status');
status.textContent = 'Options saved.';
setTimeout(function(){
status.textContent='';
}, 750);
});
console.log(save_options());
}
//Restores the form to what it once was
//stored in chrome.storage
function restore_options(){
chrome.storage.local.get({
savedFirstName: '',
savedSurName: '',
savedAddress: '',
savedCity: '',
savedPostCode: '',
savedEmail: '',
savedMobile: '',
savedPaypal: '',
savedPayPass: ''
},
function(items){
document.getElementsByName('firstName').value = items.savedFirstName;
document.getElementsByName('surName').value = items.savedSurName;
document.getElementsByName('address1').value = items.savedAddress;
document.getElementsByName('city').value = items.savedCity;
document.getElementsByName('postCode').value = items.savedPostCode;
document.getElementsByName('userEmail').value = items.savedEmail;
document.getElementsByName('userMOB').value = items.savedMobile;
document.getElementsByName('payEmail').value = items.savedPaypal;
document.getElementsByName('payPass').value = items.savedPayPass;
});
}
document.addEventListener('DOMContentLoaded', restore_options());
document.getElementById('save').addEventListener('click',save_options());
Manifest.json
"manifest_version": 2,
"name": "Project Hercules",
"description": " ",
"version": "0.894",
"permissions":[
"storage"
],
"browser_action": {
"default_icon": "Icon 5.png"
},
"options_ui": {
"page": "optionsPage.html",
"chrome_style": true
}
}
我认为您的问题是试图将对象传递到存储方法中。您需要将对象字符串化,然后进行设置,否则会出现范围错误。
我做了一个工作示例供您参考:https://jsfiddle.net/joes4gfe/9/
我不得不使用localStorage而不是chrome.storage,但我相信它也能正常工作,因为我刚开始时也遇到了同样的错误。
代码显示了如何使用JSON.stringify来解决错误:
localStorage.setItem('storedValues', JSON.stringify({
savedFirstName: firstName,
savedSurName: surName,
savedAddress: addressF,
savedCity: userCity,
savedPostCode: postCode1,
savedEmail: email1,
savedMobile: mobile,
savedPaypal: payPEmail,
savedPayPass: payPassword
}));
我确实对你的代码做了一些修改,所以一定要看看这个例子。
相关文章:
- 正在保存JavaScript内部回调函数中的值
- 如何保存javascript变量
- 如何保存Javascript变量
- 在几个浏览会话中保存javascript变量
- Chrome开发工具:保存javascript状态
- 保存 Javascript 变量以供以后使用
- 如何保存 JavaScript 变量并使用 jQuery 将它们传递到下一页
- 克隆 jQuery 对象并在其中保存 JavaScript 对象时,如何访问内容
- 保存JavaScript Cookie网站基础,而不是ASPX页面明智
- 使用jquery保存javascript对象并从数据库传递ID
- 在HTML中嵌入JavaScript或从外部保存JavaScript有哪些优点和缺点
- 在服务器上保存javascript变量
- 创建一个类来保存javascript中的全局变量
- 在Vim中保存JavaScript文件时出错
- 如何保存JavaScript日期'从浏览器到服务器,再返回的时区
- 谷歌选项页面未保存-Javascript
- 使用C#异步Postback保存Javascript值
- 使用HTML5本地stoarage来保存Javascript数组
- 浏览器如何保存JavaScript库
- 需要帮助保存javascript中onclick函数中的文件