저는이 작업을 수행하기 위해 지난 2 일 동안 노력해 왔으며 마지막 수단으로 여기에서 묻습니다. StackOverflow에서 메시지 전달, 일부 블로그 및 Google의 메시지 전달 페이지와 관련된 모든 관련 게시물을 살펴 보았습니다.LocalStorage 메시지 전달 문제 - 거의 작동합니다.
내가 만든 APP는 무언가를 포함하는 페이지에서 링크를 찾아 시작 부분을 교체합니다. 예를 들어, url에서 'google.com'을 찾고 'ask.com'으로 시작 부분을 바꿉니다.
내가 겪고있는 문제는이 변수를 localstorage 변수에 저장하려고한다는 것입니다. 그러나 페이지가 새로 고쳐지면 전달 된 새 URL이 사용되지 않습니다. 디버깅을 쉽게하기 위해 단순화 된 버전을 만들기 위해 약간의 혼란을 제거했습니다. 제발 도와주세요! 곧 머리카락도 남지 않을거야!
localStorage["talktest1"]
에는 popup.js에서 전달 된 새 URL로 변경되어야하는 URL이 들어 있습니다. 그런 다음 교체 스크립트가로드 될 때 새로운 talktest1
변수를 사용해야하지만 기존 'www.google.co.uk'변수는 계속 사용됩니다.
Manifest.js
:
{
"name": "Talk Talk",
"version": "1.0",
"description": "Tests stuff.",
"browser_action": {
"default_icon": "img/icon16.png",
"default_popup": "popup.html"
},
"options_page": "options.html",
"permissions": [
"tabs", "*://*/*"
],
"background": {
"scripts": ["js/jquery-1.7.2.min.js","js/bg.js"]
},
"icons": { "16": "img/icon16.png",
"48": "img/icon48.png",
"128": "img/icon128.png" },
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["js/jquery-1.7.2.min.js","js/bg.js"],
"run_at": "document_end"
}
]
}
popup.js
:
$(document).ready(function() {
chrome.extension.getBackgroundPage().alert_this();
$('.link_change').click(function() { // when a link is clicked - url is grabbed from a 'href'
chrome.extension.sendRequest({localstorage: "http://www.something.com"}, function(response) {
var email = response.value;
chrome.extension.getBackgroundPage().alert_this();
});
return false;
});
});
bg.js
:
if(!talktest1){
var talktest1;
}
if(!localStorage["talktest1"]){
localStorage["talktest1"] = "http://www.google.co.uk";
}
talktest1 = localStorage["talktest1"];
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
localStorage["talktest1"] = request.localstorage;
talktest1 = request.localstorage;
sendResponse({value: localStorage.talktest1});
}
);
function alert_this(){
alert("localstore|" + localStorage["talktest1"]);
alert("talktest1|" + talktest1);
}
$("a[href*='google.com']").each(function(){
this.href = this.href.replace('http://www.ask.com',talktest1);
});
왜 popup.html에서 localstorage를 설정하지 않습니까? – Oliver
popst.html에서 localstorage를 설정하면 해당 도메인에 대해서만 변수가 설정됩니다. 앱의 나머지 부분에는 여전히 불만이 남아 있습니다. 따라서 다른 URL의 새 탭에서이 URL을 사용하면 동일한 값을 유지할 수 없습니다. – Chris