0
내가 콘텐츠를 스크립트에 popup.hmtl의 로컬 스토리지에서 데이터를 전달하려는

내가 사용자 이름과 암호를 수신하고 로컬 저장소에 저장합니다 popup.html를 사용 content.js content.js하는 popup.js에서 로컬 스토리지를 전달합니다. 이제 데이터를 실행하기 전에 콘텐츠 스크립트로 전송하려고합니다.어떻게

양도 :

**popup.html** 
<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript" async src="popup.js"></script> 
</head> 
<body> 

<table> 
<tr> 
<td> 
Username: 
<td><input id="u1" type="text" name="uname"> 
</tr> 
<tr> 
<td> 
Password: 
<td><input id="u2" type="password" name="pass"> 
</tr> 
<tr> 
<td> 
<td> 
<input id="clickme" type="button" value="save" /> 
</tr> 

</table> 

<div id="result"></div> 
<div id="result2"></div> 

</body> 
</html> 

popup.js

document.getElementById('clickme').onclick=myfunction; 
var sname = localStorage.getItem("username1"); 
var spass=localStorage.getItem("password1"); 
document.getElementById("result").innerHTML = localStorage.getItem("username1"); 
document.getElementById("result2").innerHTML=localStorage.getItem("password1"); 

function myfunction(){ 

// Check browser support 
if (typeof(Storage) != "undefined") { 

    var uname="bhuwan"; 
    var username=document.getElementById("u1").value; 
    var password=document.getElementById("u2").value; 

    // Store 
    localStorage.setItem("username1", username); 
    localStorage.setItem("password1",password); 
    // Retrieve 
    document.getElementById("result").innerHTML = localStorage.getItem("username1"); 
    document.getElementById("result2").innerHTML=localStorage.getItem("password1"); 
} else { 
    document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage..."; 
} 
} 
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { 
    if (request.method == "getLocalStorage") 
     sendResponse({data: localStorage[request.key]}); 
    else 
     sendResponse({}); // snub them. 
}); 

content.js

{ 
var pid=""; 
var cid=""; 


chrome.runtime.sendMessage({method: "getLocalStorage",key="username"}, function(response) { 
    var cid = response.data; 

}); 
chrome.runtime.sendMessage({method: "getLocalStorage"},key="password" function(response) { 
    var pid = response.data; 

}); 


} 

나는 답을 찾을 수 배경에 다음 코드 없음 메시지 패싱 수 없었다 clicked.So 아이콘이있는 경우에만 popup.js 이후

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { 
     if (request.method == "getLocalStorage") 
      sendResponse({data: localStorage[request.key]}); 
     else 
      sendResponse({}); // snub them. 
    }); 

이 활성화 popup.js에서와 .js.

+0

https://developer.chrome.com/extensions/messaging – Xan

+0

질문에 대한 편집이 아닌 답변을 답변으로 게시하십시오. SO 형식으로 유지하십시오. – Xan

답변

2

팝업 페이지를 메시징하여 데이터를 검색하려고합니다.

이 문제는 팝업 페이지가 표시된 경우에만 존재합니다. 닫히면 파괴되고, 사용자의 onMessage 수신기가없고 요청이 실패합니다.

이것은 정확하게 영구적 인 이벤트 리스너 인 background 또는 event pages입니다. 또한 배경 페이지는 팝업으로 localStorage을 공유하므로 아무런 문제가 없습니다.


말했다 모두는, 어떤 메시지없이 모두 팝업 및 콘텐츠 스크립트 할 수 있다고 localStorage에 더 나은 대안이 : chrome.storage API.

+0

background.js에 코드를 전송하여 charm처럼 작동했습니다 ... 감사합니다. – Bhuwan

+0

'이것은 지속적으로 어떤 배경이나 이벤트 페이지를위한 것입니까 - 영구 이벤트 리스너입니까? - 한 번에 하나 이상의 upvote를 줄 수만 있다면. 고맙습니다. – Dave