2011-08-21 182 views
2

我在使用带有Google Chrome扩展程序弹出窗口的jQuery。弹出页面使用jQuery的'document.ready'事件来触发对Web服务的请求。问题在于弹出窗口在接收到响应之前不会呈现,这使得它看起来没有反应。有如何在显示Chrome扩展程序弹出窗口后触发事件?

<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> 

是我可以用它来触发“的getData()” Chrome的渲染弹出之后的事件:这里是页的轮廓?我试图用身体内的div的可见性事件来瞎搞,但除了处理document.ready之外,我还没有能够自动触发这些事件,这导致了相同的行为。

回答

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

也许你可以与背景页面交互以异步方式获取数据:

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()); 
    } 
}); 
相关问题