如何在显示Chrome扩展程序弹出窗口后触发事件?

时间:2011-08-21 15:04:32

标签: jquery google-chrome google-chrome-extension

我正在使用带有Google Chrome扩展弹出窗口的jQuery。弹出页面使用jQuery的'document.ready'事件来触发对Web服务的请求。问题是弹出窗口在收到响应之前不会呈现,这使得它看起来没有响应。这是页面的大纲:

<html>
<head>
    <script type="text/javascript" src="./plugin.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            plugin.init();            
            plugin.getData();
        });        
    </script>
</head>
<body>...</body>
</html>

在 Chrome呈现弹出窗口后,是否有可用于触发'getData()'的事件?我已经尝试使用body中的div的可见性事件进行monkeying,但除了处理document.ready之外,我还无法自动触发这些事件,这会导致相同的行为。

2 个答案:

答案 0 :(得分:6)

毫不拖延地使用setTimeout

<html>
<head>
    <script type="text/javascript" src="./plugin.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            plugin.init();            
            setTimeout(plugin.getData);
        });        
    </script>
</head>
<body>...</body>
</html>

我已经在我自己的扩展中完成了这个,它应该可以解决这个问题。

答案 1 :(得分:1)

也许您可以与后台页面进行交互以异步获取数据:

plugin.init()

chrome.extension.sendRequest({fetch: true}, function(response) {
  plugin.handleData(response);
});

背景:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  if (request.fetch){
    sendResponse(getData());
  }
});