我正在使用带有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之外,我还无法自动触发这些事件,这会导致相同的行为。
答案 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());
}
});