Chrome.runtime.onMessage.addListener 在新标签页上没有从 popup.js 接收消息
Chrome.runtime.onMessage.addListener on new tab not receiving message from popup.js
我在弹出窗口中有以下代码.js它响应按钮按下以获取所有选项卡,创建一个新选项卡(模板.html),并将选项卡作为数组发送到新选项卡。稍后我将删除当前选项卡并在一个页面上显示链接以节省空间(这就是扩展的想法)。
function saveAll() {
var openTabs = [];
chrome.tabs.query({}, function(tabs) {
for (var i = 0; i < tabs.length; i++) {
openTabs[i] = tabs[i];
}
createSavedPage(openTabs);
});
}
function createSavedPage(tabsToSave) {
chrome.tabs.create({
"url": chrome.extension.getURL("template.html"),
"active": false
},
function(tab) {
sendListToPage(tab, tabsToSave);
}
);
}
function sendListToPage(tab, tabsArray) {
chrome.tabs.sendMessage(tab.id, {
"action": "fill-list",
"data": tabsArray
});
}
var saveAllButton = document.getElementById("select-all-tabs");
saveAllButton.addEventListener("click", saveAll);
创建的选项卡包括模板.js文件:
function fillList(array) {
var list = document.getElementById("link-list");
for (var item in array) {
//Something
}
}
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.action == "fill-list") {
var data = request.data;
fillList(data);
}
}
);
当我创建新选项卡时,消息是从扩展发送的,但从未收到。导致此问题的原因是什么?
我还认为消息是在创建的选项卡完全加载之前发送的。所以我通过添加一个chrome.tabs.on更新的侦听器来更改弹出窗口.js:
function createSavedPage(tabsToSave) {
chrome.tabs.create({
"url": chrome.extension.getURL("template.html"),
"active": false
},
function(tab) {
chrome.tabs.onUpdated.addListener(function(tabId, info) {
if (tabId == tab.id && info.status == "complete")
sendListToPage(tab, tabsToSave);
});
}
);
}
它似乎解决了这个问题。还有更好的方法吗?
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 从popup.js|Chrome扩展访问DOM
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 弹出窗口.js 未在 Chrome 扩展程序中的 Popup 的头部标签中执行.html Popup
- 我无法让 Magnific Popup To Work (js noob)
- JS Popup 会中断 javascript 的执行
- 如何将本地存储从popup.js传递到content.js
- 如何获取popup.js中的链接以在新选项卡中打开
- 将变量从popup.js传递到background.js,接收到未定义
- chrome -如何使用dom和js在popup.html中显示图像
- 如何接收从内容脚本发送到popup.js/html的消息
- 为什么我的popup.js不能与我的background.js通信?
- Chrome扩展sendMessage从popup.html到content.js不工作
- 对于chrome扩展,main.js如何从popup.js调用函数
- 将对象从popup.js发送到本地html页面
- Chrome.runtime.onMessage.addListener 在新标签页上没有从 popup.js 接收消息
- fbAlbum2.js, bootstrap-tooltip and Magnific-Popup