2

我正在尝试为某个文件类型编写插件,并且我想在“打开方式”和“保存文件”选项下的“下载文件”对话框中添加“发送到MyAddonName”选项。不提及下载管理器。在“下载文件”对话框中添加一个选项?

有没有什么办法可以实现这个使用Firefox Addon SDK?这是我的第一个扩展,所以我对SDK或更高级的XUL插件不是很熟悉。

回答

2

我不知道如何用addon sdk做到这一点。但这是我如何从bootstrap插件做到这一点。

我会用Services.wm.addEventListener添加这个,听的chrome://mozapps/content/downloads/unknownContentType.xul

var windowListener = { 
    //DO NOT EDIT HERE 
    onOpenWindow: function(aXULWindow) { 
     // Wait for the window to finish loading 
     let aDOMWindow = aXULWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowInternal || Ci.nsIDOMWindow); 
     aDOMWindow.addEventListener('load', function() { 
      aDOMWindow.removeEventListener('load', arguments.callee, false); 
      windowListener.loadIntoWindow(aDOMWindow); 
     }, false); 
    }, 
    onCloseWindow: function(aXULWindow) {}, 
    onWindowTitleChange: function(aXULWindow, aNewTitle) {}, 
    register: function() { 
     // Load into any existing windows 
     let DOMWindows = Services.wm.getEnumerator(null); 
     while (DOMWindows.hasMoreElements()) { 
      let aDOMWindow = DOMWindows.getNext(); 
      windowListener.loadIntoWindow(aDOMWindow); 
     } 
     // Listen to new windows 
     Services.wm.addListener(windowListener); 
     registered = true; 
    }, 
    unregister: function() { 
     // Unload from any existing windows 
     let DOMWindows = Services.wm.getEnumerator(null); 
     while (DOMWindows.hasMoreElements()) { 
      let aDOMWindow = DOMWindows.getNext(); 
      windowListener.unloadFromWindow(aDOMWindow); 
     } 
     for (var u in unloaders) { 
      unloaders[u](); 
     } 
     //Stop listening so future added windows dont get this attached 
     Services.wm.removeListener(windowListener); 
    }, 
    //END - DO NOT EDIT HERE 
    loadIntoWindow: function(aDOMWindow) { 
     if (!aDOMWindow) { 
      return; 
     } 
     if (aDOMWindow.location == 'chrome://mozapps/content/downloads/unknownContentType.xul'); { 
      //check file type 
      var fileName = aDOMWindow.document.getElementById('location').value; 
      var fileType = fileName.substr(fileName.lastIndexOf('.')); 

      if (fileType == 'zip') { 
       var myxul = document.createElementNS('xul namescpae here look it up', 'element you want'); 
       aDOMWindow.document.insertBefore(elementToInsertBefore, myXul); 
      } 
     } 
    }, 
    unloadFromWindow: function(aDOMWindow) { 
     if (!aDOMWindow) { 
      return; 
     } 
    } 
} 
}; 
窗口负荷
相关问题