0

Я хочу передать данные из localstorage из popup.hmtl в контентный скрипт content.js i use popup.html для получения имени пользователя и пароля и сохранения его в локальном хранилище. Теперь я хочу передать данные в сценарий контента до его выполнения.как передать localstorage из popup.js в content.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; 

}); 


} 

Я нашел ответ:

Переданные следующий код на фоне .js из 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 активен только тогда, когда значок clicked.So Нет Передача сообщений не было возможно.

+0

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

+0

Пожалуйста, напишите свой ответ как ответ, а не как отредактировать вопрос. Сохраните формат SO. – Xan

ответ

2

Вы пытаетесь получить данные путем обмена сообщениями по всплывающей странице.

Проблема с этим: всплывающая страница существует только в том случае, если она показана. Когда он закрыт, он уничтожается, ваш слушатель onMessage не существует, и запрос не выполняется.

Это именно то, что background или event pages предназначено для - постоянных слушателей событий. Кроме того, фоновая страница делится localStorage со всплывающим меню, поэтому проблем нет.


Все, что сказал, есть лучшая альтернатива localStorage, которая доступна как для всплывающих окон и сценарии содержимого без каких-либо сообщений: chrome.storage API.

+0

Передано код на background.js, itworked like charm ... thanks – Bhuwan

+0

'Это как раз то, что для фона или событий - для постоянных прослушивателей событий. - Если бы мы могли дать более 1 upvote за раз. Спасибо. – Dave

 Смежные вопросы

  • Нет связанных вопросов^_^