javascript - 如何防止 Firefox 在启动时显示我的扩展的侧边栏?

标签 javascript firefox firefox-addon sidebar firefox-sidebar

如果我自己的边栏在 Firefox 关闭时保持打开状态,它会在启动时再次显示。我发现这是不可取的,宁愿它在手动打开之前保持隐藏状态。有可能阻止这种情况发生吗?

我尝试将这段代码添加到我的扩展程序的初始化函数中,以便在侧边栏出现时将其关闭:

toggleSidebar("mySidebar", false);

这似乎不太一致 - 它似乎忽略了 false 参数并且只是切换了侧边栏!当它正常工作时,它会产生不需要的副作用——我需要打开和关闭侧边栏一次,然后它才会显示任何内容。很奇怪,但我认为 Firefox 的部分 View 关于边栏的可见性已经不同步了。

似乎其他人在 MozillaZine forums 上也遇到了同样的麻烦.

最佳答案

您还可以在关闭过程中添加一个观察者,并在那里关闭侧边栏。我遇到了与您相同的问题,并最终选择了这条路线,因为我们已经设置了一个观察器来进行其他一些清理工作。

代码如下所示,在主覆盖层的初始化期间:

    var current = this;
    var quitObserver = {
   QueryInterface: function(aIID) {
      if (aIID.equals(Components.interfaces.nsIObserver) || aIID.equals(Components.interfaces.nsISupports)) {
         return this;
      }
      throw Components.results.NS_NOINTERFACE;
   },
   observe: function(aSubject,aTopic,aData ) {
      var mainWindow = current._windowMediator.getMostRecentWindow("navigator:browser");
      var sidebar  = mainWindow.document.getElementById("sidebar");
      if (sidebar.contentWindow.location.href == "chrome://daisy/content/sidebar.xul") {
         mainWindow.toggleSidebar('openDaisySidebar', false);
      }
   }
};

setTimeout(function() {
   var mainWindow = current._windowMediator.getMostRecentWindow("navigator:browser");
   var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
   observerService.addObserver(quitObserver,"quit-application-granted",false);
},2000);

希望对您有所帮助。

关于javascript - 如何防止 Firefox 在启动时显示我的扩展的侧边栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690002/

相关文章:

javascript - 为什么这个 javascript 对象会被操纵?

firefox - 如何在特定屏幕分辨率下使用 Firefox 测试网页/网络应用程序的外观

javascript - Firefox sdk - 内容脚本无法访问 self.port

javascript - 判断是否为asp :Placeholder is visible Jquery

javascript - charAt(i) 方法是否比仅使用 [i] 更快?

html - 带有 SVG Firefox 的元素 img

javascript - HTML 表单属性 "name"未在 Firefox 中定义

firefox-addon - 火狐 SDK : how to automatically place the addon version inside a html page at compilation time

javascript - 禁用特殊字符(引号)

java - Selenium-IDE : Make a . java 文件在 FireFox 扩展中运行