我终于得到了我在Firefox中按计划运行的第一个JS脚本。现在我需要切换到chrome.storage,否则它将无法在我的扩展程序中运行。
基本上我想更新HTML文件中的值,可以通过输入框中的输入来更改。
非常欢迎您在我的代码中选择,并告诉我什么是完全不正常的。但我对JS很新,我只是想让它发挥作用。由于这与localstorage一起工作,我想我必须让它与chrome存储一起工作。一旦我开始工作,就可以开始清理这个烂摊子了。先感谢您! (我试图解决这个问题,因为大约12个小时没有。无法掌握它。)
检查脚本时出现的错误:
Uncaught Error: Invocation of form get(string) doesn't match definition get(optional string or array or object keys, function callback)
at normalizeArgumentsAndValidate (extensions::schemaUtils:112:11)
at StorageArea.self.(anonymous function) [as get] (extensions::StorageArea:35:14)
at chrome-extension://fcbadpjebgjnohhcihmkopdbnbjjmnod/initialize_id.js:5:26
options.html 这是"设置"文件,其中一个输入id应该是可更改的。
</head>
<body>
<p>ENTER YOUR ID FROM tsindex.com BELOW</p>
<form>
<input id="ts_id_js_html" type="text" value="128856"></input>
<br>
<br>
<button onclick="store()">Save/Load</button>
</form>
<script src="initialize_id.js"></script>
<script src="options.js"></script>
<script src="load_id.js"></script>
</body>
</html>
options.js 这将存储chrome.storage.local中输入字段的给定ID(在localstorage之前)
function store(){
var input_id = document.getElementById("ts_id_js_html").value;
chrome.storage.local.set("ts_id_js", input_id);
}
如果chrome.storage.local未定义,则initialize.js 执行一次X.否则它获取存储的值并替换字段中的输入。
var init_count;
if (chrome.storage.local.get("ts_id_js") === undefined && init_count == undefined) {
init_count++; //ignore this for now
} else {
document.getElementById("ts_id_js_html").value = chrome.storage.local.get("ts_id_js");
}
load_id_to_popup.js 当popup.html打开时会加载,并在必要的字段中输入给定的ID。
document.getElementById('input_id').dataset.serverid =
chrome.storage.local.get("ts_id_js");
IGNORE! load_id.js 这是当前的冗余,请忽略这一点。
document.getElementById("ts_id_js_html").value =
chrome.storage.local.get("ts_id_js");
答案 0 :(得分:0)
chrome.storage.local.get
是异步的,这是卑鄙的,Chrome会将值返回给回调函数:
chrome.storage.local.get("ts_id_js", function(obj) {
let value = obj["ts_id_js"];
});