我刚刚完成了一个chrome扩展的alpha版本,它可以从字典网页解析日文并将其显示为闪存卡。它是传递DOM并解析所有类型数据的单个js。
现在,扩展程序正在网页内创建一个div元素来存储所有数据,我想将其从我的扩展程序移动到弹出窗口。
所以我添加一个弹出窗口并点击图标
"browser_action": {
"default_icon": "icon19.png",
"default_title": "Tangorin extention is active",
"popup": "popup.html"
}
什么都没发生,所以我认为可能是因为我告诉他在我的eventHandler上打开一个特定的页面,所以我需要一些能告诉它打开弹出窗口的东西。我向外看,发现了一些东西,它会在你的扩展程序中调用消息连接。
所以我跟着google guild并在我的eventHandler
中做了类似的事情chrome.browserAction.onClicked.addListener(function(activeTab)
{
var newURL = "http://tangorin.com/examples/";
chrome.tabs.create({ url: newURL });
});
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
console.log("message");
});
此外,我认为这称为从网页发送消息,因此我添加了权限以及将在我的脚本上调用它的内容。
"externally_connectable": {
"matches": ["*://*.tangorin.com/examples/*"]
}
会在我的剧本上调用它。
function print_results() {
//bla bla
chrome.runtime.sendMessage({greeting: "hello"});
}
没有任何反应,chrome.runtime.sendMessage
没有在eventHandler中触发该函数。
我是否在正确的轨道上?或者有更好的方法让它打开弹出窗口? 我还不太了解扩展开发,但我设法让它工作到现在。
提前致谢, 或
编辑:也许我可以在用户点击内容脚本创建的对象时打开默认弹出窗口?
答案 0 :(得分:1)
"background": { "scripts":["background.js"] }
在你的background.js脚本中添加:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.greeting == "hello"){
console.log("message");
sendResponse({status:"Message delivered success!"});
}
});
在popup.html中添加脚本main.js,代码为:
function print_results() {
//bla bla
chrome.runtime.sendMessage({greeting: "hello"});
}
并查看此内容以便更好地理解https://developer.chrome.com/extensions/messaging。 希望它有所帮助。