【问题标题】:Configuring a sidebar_action to be only on for certain sites?将 sidebar_action 配置为仅对某些站点启用?
【发布时间】:2018-12-09 06:45:45
【问题描述】:

我想创建一个 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

但它们似乎没有涵盖如何有条件地隐藏/显示侧边栏。他们只是有点,总是显示出来。不是我想要的。

有没有办法以这种方式使用侧边栏,或者我应该使用其他方法?

【问题讨论】:

  • 哪个事件会导致侧边栏出现,哪些事件会导致它被隐藏?
  • 仅限页面导航。在我的示例中,如果他们导航到google.com,则会出现侧边栏。否则,它就会消失。或者,如果他们访问的 URL 匹配一个正则表达式,例如 .*\/event\/.*
  • 所以,只要用户在 google.com 上,侧边栏应该是可见的,并且一旦他/她访问另一个域,侧边栏应该消失。对吗?
  • 是的。我认为在我的实际用例中,每当用户导航到其 url 匹配正则表达式的页面时

标签: javascript firefox firefox-addon firefox-sidebar


【解决方案1】:

您可以根据清单文件中的权限设置来控制何时将您的扩展程序插入到当前访问的页面(从而导致您的侧边栏出现)或不插入

manifest.json

...
"permissions": [
  ... 
  "http://*.google.com/",
  "http://*event*/",
  ...
],

在上面的示例中,该扩展程序仅适用于 google.com 以及包含单词 event 的任何域。如果您想定位单词 event 出现在路径中的域,那么您可以使用类似

"http://*/*event*/*",

你明白了。

更多信息请阅读Google's Extension Development - Declare Permissions

【讨论】:

  • 试过了。它在Firefox上不起作用。我没有尝试过 chrome,但我没有为 chrome 做扩展。 "permissions": ["storage", "tabs", "http://*.google.com/*" ],
  • 嗨@ahmad 我加了一个赏金。您是否有机会在 Firefox 中试用 Firefox 侧边栏扩展示例,看看是否能找到可行的解决方案?您在此处发布的内容对我不起作用
  • 我会试试@NicholasDiPiazza
  • 酷!谢谢!非常感谢
  • 我将把你的答案归功于它,因为它确实适用于 chrome。
【解决方案2】:

这可以通过指定主机来实现,主机可以是已知字符串列表之一(例如“地理位置”),也可以是允许访问一个或多个主机的匹配模式。

这是清单文件权限部分的示例:

"permissions": [
  "tabs",
  "bookmarks",
  "http://www.blogger.com/",
  "http://*.google.com/",
  "unlimitedStorage"
],

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多