如何获取在Firefox中在多个窗口中打开的所有选项卡的标题?

维品

我正在使用附加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;

此代码仅从主窗口和子窗口中获取所有选项卡标题,而不从正在使用_blank属性打开的所有其他新窗口的选项卡中获取。

注意:我们可以轻松地重新创建问题,只需创建一个html页面并使用以下代码即可:

 <a href="http://www.someurl.com" target="_blank">Visit me</a> 

使用“ _blank”属性打开的页面不在选项卡数组下。

任何帮助表示赞赏。提前致谢!!

维品

通过创建自定义数组,我们可以从所有窗口选项卡中获取所有标题。

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Safari中每个窗口的每个选项卡中获取所有打开的URL?

如何使JS脚本在Firefox中给定窗口的所有选项卡中运行?

如何为Vim中的所有缓冲区打开单独的选项卡/窗口?

从cmd行中打开多个文件,这些文件在不同窗口中跨选项卡

如何在选项卡中获取所有frameId?

是否可以将URL从Google Chrome(或其他浏览器)窗口中所有打开的选项卡复制到电子邮件中?

如何在Firefox中本机搜索打开的选项卡的页面标题?

在一个目标选项卡中打开所有html链接,而无需创建多个选项卡

通过终端在同一窗口中打开firefox新选项卡

使Safari在现有窗口中以选项卡(而不是新窗口)打开新链接

使用Python获取所有打开的选项卡的URL

JavaFX Alert不会在新窗口中打开,而是在新选项卡中打开

如何在Atom编辑器中的其他选项卡而不是新窗口中打开新文件?

Chrome 扩展程序:如何通过单击 html 弹出窗口中的按钮在新选项卡中打开指定链接?

JavaScript在新窗口中打开,而不是选项卡

在新窗口中打开 Markdown 预览选项卡?

在Vim中,如何将现有窗口分离/打开到新选项卡?

在新选项卡中打开所有外部 URL

如何在IE选项卡而不是新窗口中打开URL-Java

如何在 FMX 中隐藏 TTabControl 的所有选项卡标题

如何使用Vimperator关闭标题或URL中包含特定单词的所有选项卡?

在所有 Firefox 选项卡中禁用 Java Script,但当前选项卡除外

是否可以告知Terminal在现有的打开的终端窗口中以选项卡的形式打开新窗口?

如何仅在vim的当前选项卡中关闭所有窗口

如果在单个窗口中打开多个选项卡,则getWindowHandles返回一个窗口句柄

如何在Vim中所有打开的选项卡中搜索当前单词?

如何在所有打开的选项卡中更新本地存储

如何在NotePad ++的单个下拉列表中合并所有打开的选项卡?

如何从 chrome.windows 创建的新弹出窗口中获取当前活动选项卡