Chrome扩展程序消息超时

时间:2013-02-18 16:23:04

标签: google-chrome-extension timeout message

我有一个标签,其中包含以下内容:

<meta http-equiv="refresh" content="0; URL='whatsoever'" />

我还有一个运行插件,使用这种技术注册每个标签:

chrome.tabs.onUpdated.addListener(doStuff);

doStuff-function向选项卡发送消息:

function doStuff(tabId, changeInfo, tab){

    chrome.tabs.sendMessage(tabId, {'message': 'content'}, function(response){

        doOtherStuff(response);

    });

}

我注册了一个脚本(此处未见),在该脚本中,会发生这种情况:

function receiveMessage(request, sender, sendResponse){

    sendResponse({'content': 'responseData'});

}

chrome.extension.onMessage.addListener(receiveMessage);

我的问题是,由于瞬时刷新,响应超时,并且控制台中出现以下错误:

  

无法发送响应:chrome.extension.onMessage侦听器必须   如果要在侦听器返回后发送响应,则返回true   (消息由扩展XYZ发送)。

为什么会这样,我该如何规避这个问题呢?提前谢谢。

1 个答案:

答案 0 :(得分:1)

它说,函数receiveMessage应该以return true;退出。只有这样才会继续发送消息。如果为false,则在函数返回时中止。所以添加return true

请参阅:

  

除非事件侦听器返回,否则此函数将变为无效   从事件监听器返回true表示您希望发送一个   异步响应(这将使消息通道保持打开状态   另一端直到调用sendResponse)。

来自doc: https://developer.chrome.com/extensions/runtime#event-onMessage

function receiveMessage(request, sender, sendResponse){

    sendResponse({'content': 'responseData'});
    return true;
}

chrome.extension.onMessage.addListener(receiveMessage);