Chrome扩展程序消息传递

时间:2014-04-04 13:40:58

标签: javascript google-chrome google-chrome-extension coffeescript

我有一个Chrome扩展程序正在发送登录消息:

chrome.runtime.sendMessage data, (response) ->
  debugger
  if response.api_key
    $("body").fadeOut 1000, -> window.close()

  else
    App.Ui.clearForm()
    App.Ui.showErrorMessage()

但是,回调永远不会被击中:

chrome.runtime.onMessage.addListener (request, sender, sendResponse) ->
  if request and request.action is "login"

    $.ajax(
      type: "POST"
      url: App.Config.authUrl()
      data: request.data
      dataType: "json"
    ).then( (data) ->

      App.Storage.saveSession(data.user)
      sendResponse(data.user)

    , (data) ->

      sendResponse(data)

    )

我做错了吗?

1 个答案:

答案 0 :(得分:4)

有关sendResponse的信息,请参阅documentation for onMessage

  

当事件侦听器返回时,此函数变为无效,除非您从事件侦听器返回true以指示您希望异步发送响应(这将使消息通道保持打开到另一端,直到调用sendResponse为止)。 p>

因此,要修复代码,您需要在异步调用后在侦听器中返回true