1
我有一个关于在我的Chrome扩展中的JavaScript的小问题。我的弹出窗口包含用于从一个大网站搜索书籍的小表单。 所以当我搜索书名时,它应该显示加载微调,发送xhr请求到图书API,删除微调,在新标签中打开options.html并显示结果。它的工作原理,但只是有时。 那么你有什么建议?铬onMessage.addListener有时只执行
popup.js
// var books includes JSON array of fetched books
hrome.tabs.create({url: "options.html"}, function(tab){
chrome.tabs.sendMessage(tab.id, {booksList: books});
});
而且options.js
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
alert("OK");
});
,但确定只显示有时...为什么?
我相信domready中有时运行为时已晚。将'chrome.extension.onRequest'移动到'$()。ready'外部,或使用查询字符串或URL片段将数据从弹出窗口传递到选项页面。这种方法的一个优点是用户也能够通过修改URL和/或书签查询来改变查询。 – 2012-08-08 12:53:12
在ready函数外部移动监听器是个好主意,但我想同时使用DOM进行操作。那么该怎么做呢? – Droidik 2012-08-08 13:16:54
您可以将事件侦听器中的逻辑移动到另一个函数,然后使用布尔标志和domready事件在正确的时间调用该函数。你有没有考虑过我的其他建议?这看起来更贴心我。 – 2012-08-08 14:23:15