【问题标题】:How would one display a prompt after installation of an extension?安装扩展程序后如何显示提示?
【发布时间】:2012-05-18 17:51:29
【问题描述】:

当我的插件安装时,它需要提示用户获取用户名或类似的东西。之后它会存储它并且不应该再次询问。我将把这个提示放在哪里? install.rdf? browser.xul?

【问题讨论】:

    标签: firefox firefox-addon installation


    【解决方案1】:

    在安装扩展程序时没有明确的运行代码机制 - 您应该在第一次运行扩展程序时执行此操作。最简单的方法是检查用户名是否已经设置。如果不是 - 显示提示。

    不建议显示模态对话框,这对用户来说非常烦人,尤其是当它们在 Firefox 启动期间突然出现时。您应该改为在选项卡中打开您的页面。一个小麻烦:Firefox 在启动时可能正在恢复之前的会话。如果您过早打开页面,会话恢复机制可能会取代它。所以你应该等待sessionstore-windows-restored notification,这样的事情应该可以工作:

    Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
    Components.utils.import("resource://gre/modules/Services.jsm");
    
    var observer = {
      observe: function(subject, topic, data)
      {
        Services.obs.removeObserver("sessionstore-windows-restored", this);
    
        var browser = window.getBrowser();
        browser.loadOneTab("chrome://...", {inBackground: false});
      },
      QueryInterface: XPCOMUtils.generateQI([
        Components.interfaces.nsIObserver,
        Components.interfaces.nsISupportsWeakReference
      ])
    };
    Services.obs.addObserver("sessionstore-windows-restored", observer, true);
    

    最后一个复杂因素是您的代码可能是从浏览器窗口叠加层运行的——这意味着如果恢复的会话包含多个窗口,您的代码将会有多个实例。您可能希望上面的代码只运行一次,而不是在每个浏览器窗口中打开您的第一个运行页面。所以你必须以某种方式进行协调,也许是通过preferences。一个稍微复杂但更好的解决方案是在您的扩展中添加一个 JavaScript code module - 代码模块只加载一次,因此您不会在那里遇到协调问题。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 碰巧的是,在安装扩展程序时,您的扩展程序(以及您编写的不错的插件侦听器)不太可能运行;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2016-06-16
      • 1970-01-01
      • 2015-01-17
      • 2015-06-28
      • 2013-10-19
      • 2023-01-05
      相关资源
      最近更新 更多