크롬 확장 프로그램에서 작업 중이며 로컬 저장소에 정보를 성공적으로 저장할 수 있지만 로컬 저장소에 일단 정보가 실제로 액세스됩니다. 내가 반환하지 않은 것은 NULL이라고 말합니다.크롬 확장자를 사용하여 localstorage에 액세스하는 방법
두 파일 : options.html 및 content.js가 있습니다. options.html은 사용자가 로컬 스토리지에 저장할 정보를 입력하는 곳이며 content.js는 사용할 정보에 액세스합니다.
options.html
$(function() {
// Insert new buttons (you'd probably not ACTUALLY use buttons, instead saving on blurs or every x seconds)
$("#save_buttons").after("<input type='submit' value='Save Form' id='saveData'>").after("<input type='submit' value='Clear Saved Data' id='clearData'>");
$("#saveData").click(function(e) {
// Don't actually submit form
e.preventDefault();
// Bit of generic data to test if saved data exists on page load
localStorage.setItem("flag", "set");
// serializeArray is awesome and powerful
var data = $("#hanes").serializeArray();
// iterate over results
$.each(data, function(i, obj) {
// HTML5 magic!!
localStorage.setItem(obj.name, obj.value);
});
});
// Test if there is already saved data
if (localStorage.getItem("flag") == "set") {
// Tell the user
$("header").before("<p id='message'>This form has saved data!</p>");
// Same iteration stuff as before
var data = $("#hanes").serializeArray();
// Only the only way we can select is by the name attribute, but jQuery is down with that.
$.each(data, function(i, obj) {
$("[name='" + obj.name +"']").val(localStorage.getItem(obj.name));
});
}
// Provide mechanism to remove data. You'd probably actually remove it not just kill the flag
$("#clearData").click(function(e) {
e.preventDefault();
localStorage.setItem("flag", "");
});
});
<form id="hanes" name="hanes">
First name: <input type="text" name="firstname" id="firstname" /><br />
Last name: <input type="text" name="lastname" /><br />
Address: <input type="text" name="address" /><br />
City: <input type="text" name="city" /><br />
</form>
background.html
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "firstname")
sendResponse({status: localStorage['firstname']});
else
sendResponse({});
});
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "lastname")
sendResponse({status: localStorage['lastname']});
else
sendResponse({});
});
content.js
chrome.extension.sendRequest({method: "firstname"}, function(response) {
alert(response.status);
});
chrome.extension.sendRequest({method: "lastname"}, function(response) {
alert(response.status);
});
'options.html'에서 [resources 탭] (https://developers.google.com/chrome-developer-tools/docs/resources)을 보면 localstorage에서 예상대로 데이터를 볼 수 있습니까? – abraham
@abraham 예, 로컬 저장소 아래의 자원 탭에있는 모든 데이터를 볼 수 있으며'메시지 전달 '으로 작업 할 수 있습니다. 코드를 업데이트하여 로컬 스토리지에서 각 데이터를 호출하는 방법을 설명 할 수 있습니까? 모든 것을 호출하는 방법을 모르겠습니다. 나는 전화하는 법 밖에 모른다. –