如何获取在 Firefox 中多个 window 打开的所有选项卡的标题?
How to get the title of all the tabs which is open in multiple window in firefox?
我正在使用 Add-on SDK 创建一个 firefox 扩展,它将显示所有选项卡详细信息,包括内存、标题和 url。我尝试使用 require("sdk/tabs"); 获取标签标题选项卡包。
示例代码如下:
popup.js
<body>
<ul>
<li>
<a href="#" tabindex="1" id = "tab_list"> Settings</a>
</li>
</ul>
<script type="text/javascript" src="popup.js"></script>
</body>
popup.js
var tab_button = document.getElementById("tab_list");
tab_button.addEventListener("click", function() {
addon.port.emit("GET_TABS");
});
主文件:index.js
const buttons = require("sdk/ui/button/action");
const { TogglePanel } = require("popupPanel");
var button = buttons.ActionButton({
id: "mem-tools",
label: "tabs info listing",
icon: {
"16": "./tab.png",
},
onClick: handleClick
});
let togglePanel = new TogglePanel();
function handleClick(state) {
togglePanel.panel.show({position:button});
}
面板文件:popupPanel.js
var Panel = require('sdk/panel');
var self = require('sdk/self');
var { MemoryHandler } = require('memory-handler');
var memoryHandler = new MemoryHandler();
function TogglePanel() {
this.panel = new Panel.Panel({
width: 150,
height: 200,
contentURL: self.data.url("popup.html")
});
this.panel.port.on("GET_TABS", function() {
memoryHandler.getAllTabs();
});
}
exports.TogglePanel = TogglePanel;
memory-handler.js
var tabs = require('sdk/tabs');
function MemoryHandler() {
return {
getAllTabs: () => {
for(let tab of tabs) {
console.log(tab.title);
}
}
}
}
exports.MemoryHandler = MemoryHandler;
此代码仅从主 window 和 child window 中获取所有标签标题,而不是从所有其他打开的新 window 标签中获取_空白属性。
注意:我们可以轻松重现问题,只需创建一个 html 页面并使用以下代码:
<a href="http://www.someurl.com" target="_blank">Visit me</a>
使用“_blank”属性打开的页面不在选项卡数组下。
感谢任何帮助。
提前致谢!!
我们可以通过创建自定义数组从所有 window 选项卡中获取所有标题。
index.js
var memoryHandler = new MemoryHandler();
tabs.on('ready', function(tab) {
memoryHandler.addTabDetails({id: tab.id ,title: tab.title, url: tab.url});
});
如果你想在页面加载后获取使用javascript设置的标题,你可以在选项卡
的内容脚本中注入突变观察者代码
memory-handler.js
var presentTabs = []
function MemoryHandler() {
return {
addTabDetails: (tab_array) => {
presentTabs.push(tab_array);
}
}
}
exports.MemoryHandler = MemoryHandler;
我正在使用 Add-on SDK 创建一个 firefox 扩展,它将显示所有选项卡详细信息,包括内存、标题和 url。我尝试使用 require("sdk/tabs"); 获取标签标题选项卡包。
示例代码如下:
popup.js
<body>
<ul>
<li>
<a href="#" tabindex="1" id = "tab_list"> Settings</a>
</li>
</ul>
<script type="text/javascript" src="popup.js"></script>
</body>
popup.js
var tab_button = document.getElementById("tab_list");
tab_button.addEventListener("click", function() {
addon.port.emit("GET_TABS");
});
主文件:index.js
const buttons = require("sdk/ui/button/action");
const { TogglePanel } = require("popupPanel");
var button = buttons.ActionButton({
id: "mem-tools",
label: "tabs info listing",
icon: {
"16": "./tab.png",
},
onClick: handleClick
});
let togglePanel = new TogglePanel();
function handleClick(state) {
togglePanel.panel.show({position:button});
}
面板文件:popupPanel.js
var Panel = require('sdk/panel');
var self = require('sdk/self');
var { MemoryHandler } = require('memory-handler');
var memoryHandler = new MemoryHandler();
function TogglePanel() {
this.panel = new Panel.Panel({
width: 150,
height: 200,
contentURL: self.data.url("popup.html")
});
this.panel.port.on("GET_TABS", function() {
memoryHandler.getAllTabs();
});
}
exports.TogglePanel = TogglePanel;
memory-handler.js
var tabs = require('sdk/tabs');
function MemoryHandler() {
return {
getAllTabs: () => {
for(let tab of tabs) {
console.log(tab.title);
}
}
}
}
exports.MemoryHandler = MemoryHandler;
此代码仅从主 window 和 child window 中获取所有标签标题,而不是从所有其他打开的新 window 标签中获取_空白属性。
注意:我们可以轻松重现问题,只需创建一个 html 页面并使用以下代码:
<a href="http://www.someurl.com" target="_blank">Visit me</a>
使用“_blank”属性打开的页面不在选项卡数组下。
感谢任何帮助。 提前致谢!!
我们可以通过创建自定义数组从所有 window 选项卡中获取所有标题。
index.js
var memoryHandler = new MemoryHandler();
tabs.on('ready', function(tab) {
memoryHandler.addTabDetails({id: tab.id ,title: tab.title, url: tab.url});
});
如果你想在页面加载后获取使用javascript设置的标题,你可以在选项卡
的内容脚本中注入突变观察者代码memory-handler.js
var presentTabs = []
function MemoryHandler() {
return {
addTabDetails: (tab_array) => {
presentTabs.push(tab_array);
}
}
}
exports.MemoryHandler = MemoryHandler;