[英]how to make statements in javascript function run sequentially in chrome extension?
我正在制作chrome扩展程序,在扩展程序中,我正在从内容脚本向后台脚本发送消息。
chrome.runtime.onMessage.addListener(
function triggerNew(request) {
if (request.method == "addNew") {
//alert("in content script");
var x=startClick();
chrome.runtime.sendMessage({name: "Response" , data : x});
}
}
);
`function startClick(){
document.addEventListener('click', function(e){
var target = e.target || event.srcElement;
return target;
}`
我在内容脚本中调用了函数startClick
,但是在startClick
执行之前startClick
发送响应消息。
如何使它发送从startClick
函数获取的变量x
的数据?
我认为chrome.runtime.sendMessage
之后不会调用startClick
,问题出在您使用回调方法时。
回调方法的签名必须如下所示:
function(any message, MessageSender sender, function sendResponse) {...};
要发送对chrome.runtime.onMessage.addListener
的调用的响应,您必须使用doc中此处指定的sendResponse
函数: https : //developer.chrome.com/extensions/runtime#event-onMessage
重要说明:如文档中所述(请务必阅读全部内容),回调函数必须返回true
才能使sendResponse函数保持有效。 如果要从异步函数调用sendResponse
,这是必不可少的。
编辑:试试这个
背景:
chrome.runtime.onMessage.addListener(
function triggerNew(request, sender, sendResponse) {
if (request.method == "addNew") {
var x = startClick();
sendResponse({
data: x
});
}
}
);
内容脚本:
chrome.extension.sendMessage({method: 'addNew'} , function(response) {
alert(response.data);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.