使用jQuery开发Chrome扩展时,我遇到了一个特别奇怪的问题。我的扩展,弹出页面和背景页面中有两个“框架”。这两个页面都包含了jQuery库。基本上我想要做的是当用户点击浏览器操作图标时,显示加载屏幕,而后台页面收集数据,然后将其发送回弹出页面。我试图通过让弹出页面在后台页面调用一个函数然后让后台页面使用弹出窗口的dom来访问数据并在UI中显示来做到这一点。但是,我注意到当你从chrome.extension.getView()获得一个Window对象时,由于某种原因它无法访问jQuery库。任何对“$”的调用都会遇到“找不到方法”错误。那么处理这个问题的最佳方法是什么?
答案 0 :(得分:1)
我会使用message parsing执行此操作。基本上,您在后台页面中添加了一个监听器功能,类似于:(文档页面略微简化的示例)
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse)
{
console.log("Received a request!");
if (request.message == "hello")
sendResponse({message: "goodbye"});
});
后台页面获取信息,并使用sendResponse函数将其返回到弹出窗口。
然后在你的弹出窗口中,你实现了这样的东西:
chrome.extension.sendRequest({message: "hello"}, function(response) {
console.log(response.message);
});
消息({message: "hello"}
部分)可以是任何与JSON兼容的对象。