我想创建一个firefox扩展,允许侧边栏在用户导航到某些网页时自动显示.
例如,假设我将其配置为如此,如果用户导航到google.com他们将会出现一个侧边栏,让他们看到他们已经完成的一些"以前的搜索".
我不希望他们必须单击菜单操作/键盘快捷键才能显示它.而且我不想无限期地展示它.
我一直在查看这些链接,以了解如何使用侧边栏:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action
https://github.com/mdn/webextensions-examples/tree/master/annotate-page
但它们似乎没有涵盖如何有条件地隐藏/显示侧边栏.他们只是有点,总是显示出来.不是我想要的.
有没有办法以这种方式使用侧边栏或我应该使用另一种方法?
我正在使用SDK Tutorial网站中的代码:
var sidebar = require("sdk/ui/sidebar").Sidebar({
id: 'my-sidebar',
title: 'My Sidebar',
url: require("sdk/self").data.url("sidebar.html"),
onAttach: function (worker) {
// listen for a "ready" message from the script
worker.port.on("ready", function() {
// send an "init" message to the script
worker.port.emit("init", "message from main.js");
});
}
});
Run Code Online (Sandbox Code Playgroud)
这非常有效.现在的问题是,这只允许我通过work.port onAttach发送一些东西(以及侧栏上的3个其他事件).我需要的是使用此侧栏范围之外的emit函数.例如,如果我在同一个main.js中使用一个类似于标签的监听器
tabs.on('ready', function(tab) {
sidebar.worker.port.emit("init", "message from main.js");
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.我也试过了
sidebar.port.emit("init", "message from main.js");
Run Code Online (Sandbox Code Playgroud)
要么
worker.port.emit("init", "message from main.js");
Run Code Online (Sandbox Code Playgroud)
没有成功.
我也尝试将标签监听器放在侧边栏的onAttach中(所以监听器内部是一个监听器),但这也无效.
有人对那个有想法吗?谢谢.
javascript firefox firefox-addon firefox-sidebar firefox-addon-sdk