如何连接弹出窗口和后台脚本中的调用? 我的代码是以下...我正在从弹出窗口发送一条消息,以验证我是否登录,并根据我将有一个不同的弹出窗口。在发送消息后,我调用chrome存储上的get来检查用户是否已记录并且其令牌仍然有效。
如果我发送消息并立即调用回调函数我很好。如果我添加对存储的调用并在后一个函数的主体内调用回调函数,我没有碰巧调用我为消息监听器定义的回调函数(无论什么......我都显示“窗口”但是消息由后台脚本发送和接收。)
任何人都可以解释我为什么,也许我该如何处理我的情况? 来自弹出窗口的脚本 - >验证是否存储了身份验证令牌 - >回调函数,用于生成要在弹出窗口中显示的HTML代码。
我错过了什么?
check.js:
var html_1 = '<div><input type="button" value="signup"></input><input type="button" value="login"></input></div>';
var html_2 = '<div>Username: <input type="text" name="username"></input>Password: <input type="text" name="password"></input></div>';
chrome.runtime.onMessage.addListener( function( request, sender, sendResponse) {
if (request.type === 'authenticate') {
chrome.storage.sync.get(null, function(o) {
var v = 0;
if ( !isEmpty(o) ) {
v = o.pf_logged;
v++;
chrome.storage.sync.set( {"pf_logged": v } );
} else {
chrome.storage.sync.set( {"pf_logged": 10} );
}
if (v % 2 == 0) {
console.log('asda')
sendResponse(html_1);
} else
;
sendResponse(html_2);
});
}
});
open_dialog.js:
$(document).ready(function() {
function setDOM(info) {
}
chrome.runtime.sendMessage({type:'authenticate'}, function(info) {
$('#dialog').html(info);
console.log('ad')
console.log(info)
});
});
的manifest.json:
{
"manifest_version": 2,
"name": "WARC creator",
"description": "This is the description",
"version": "0.1",
"icons": {
"64" : "icons/icon64.png"
},
"browser_action": {
"default_icon": "icons/icon64.png",
"default_title": "Title",
"default_popup": "html/a.html"
},
"background":{
"scripts":["js/check.js"]
},
"permissions":["storage"],
"homepage_url": "http://test.com"
}
a.html:
<!DOCTYPE html>
<html>
<head>
<title>Dialog test</title>
</head>
<body>
<div id="dialog">window</div>
</body>
<script src="/js/jquery.min.js"></script>
<script src="/js/open_dialog.js"></script>
</html>