2

특정 파일 형식에 대한 addon을 쓰려고하는데 "Open with"및 "Save file"옵션 아래에있는 "MyAddonName으로 보내기"옵션을 다운로드 파일 대화 상자에 추가하고 싶습니다. 다운로드 관리자를 언급하지 않습니다.파일 다운로드 대화 상자에 옵션을 추가 하시겠습니까?

Firefox Addon SDK을 사용하여이를 수행 할 수있는 방법이 있습니까? 이것은 첫 번째 확장이므로 SDK 나 고급 XUL 애드온에 익숙하지 않습니다.

답변

2

addon sdk로이 작업을 수행하는 방법을 잘 모르겠습니다. 하지만 이것은 부트 스트랩 애드온 (bootstrap addon)에서 수행하는 방법입니다.

내가 이것을 추가하고 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; 
     } 
    } 
} 
}; 
의 창 하중을 듣고 Services.wm.addEventListener을 사용