2011-08-21 109 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()); 
    } 
}); 
相關問題