2015-09-25 70 views
0

下面我有代碼爲xul插件其預計工作。Firefox插件無法轉換爲引導

即在瀏覽器啓動時顯示用戶名和密碼輸入,並且只要該主題是http-on-examine-response,它就驗證並寫入指定的文件。

但是,當我嘗試將其轉換爲自舉擴展名時,它甚至不會在瀏覽器啓動時顯示用戶名密碼輸入,並且在編譯和運行時不會在控制檯中顯示任何內容。

我改變了組件...到Cu/Cc/etc後,我找不出錯誤的東西。 我下面簡稱鏈接

https://developer.mozilla.org/en/Add-ons/Bootstrapped_extensions

What does paragraph about figuring out XUL elements mean in MDN document: "How to convert an overlay extension to restartless"

https://github.com/Noitidart/l10n/tree/xhtml-xul

下面是我的代碼:

const {Cc, Ci, Cu, components} = require("chrome"); 
Cu.import('resource://gre/modules/XPCOMUtils.jsm'); 
function Tdatacounter() { 
    var Tdatacounter = { 
    observe: function(subject, topic, data) { 
     if (topic == "http-on-examine-response") { 
     var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel); 
     if (httpChannel.responseStatusText == "OK") 
     { 
     var buffer = httpChannel.URI.spec; 
      var pw = buffer.search("pub.tdata.com/releasepic"); 
      if (pw > 0) 
      { 
      var date = new Date(); 
      var TimeStamp = date.toLocaleString(); 
      var pfum = buffer.search("flag=unmap"); 
      if (pfum > 0) 
      { 
      var flagname = "unmap"; 
      var flagnum = 4; 
      } 
      if (flagnum > 0) 
      { 
      buffer += "^" + ThisUserName + "^" + ThisComputerName + "^" + TimeStamp + "^" + flagname + "\r\n"; 
      fos.write(buffer, buffer.length); 
      } 
      } 
     } 
    } 
    } 
    }; 

    var nsIEnvironment = Cc["@mozilla.org/process/environment;1"] 
           .getService(Ci.nsIEnvironment); 
    var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"] 
         .getService(Ci.nsIPromptService); 

var usernamelist = ["user1","user2","user3"]; 
var passlist = ["e%cd1","kowgirl23","bhava1204"]; 
var ThisUserName = null; 
var username = {value: "UserName"};    // default the username to user 
var password = {value: "pass"};    // default the password to pass 
var check = {value: false};     // default the checkbox to true 
var GetUserName = prompts.promptUsernameAndPassword(null, "ProcName", "Enter username and password:", username, password, null, check); 

while (GetUserName === true) { 
var a = usernamelist.indexOf(username.value); 
var b = passlist[a]; 
if (password.value == b) { 
var ThisUserName = username.value; 
break; 
} else { 
var GetUserName = prompts.promptUsernameAndPassword(null, "ProcName", "Enter username and password:", username, password, null, check); 
} 
} 

if (ThisUserName !== null) { 

    var ThisComputerName = nsIEnvironment.get("ComputerName"); 

    var FileUtils = Cu.import("resource://gre/modules/FileUtils.jsm").FileUtils; 

var d = new Date(); 
var dd = d.getDate(); 
if (dd < 10) 
dd = "0" + dd; 
var mm = (d.getMonth()+1); 
if (mm < 10) 
mm = "0" + mm; 
var yyyy = d.getFullYear(); 


    var file = new FileUtils.File("\\\\STJ\\Proc1\\-\\" + yyyy + "\\" + mm + "\\" + dd); 
    if (!file.exists()) { 
    file.create(file.DIRECTORY_TYPE, 0755); 
    } 
    var filename = "HM_" + ThisUserName + yyyy + "-" + mm + "-" + dd + ".txt"; 
    file.append(filename); 

    var fos = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); 
    // PR_WRONLY | PR_CREATE_FILE | PR_APPEND 
    fos.init(file, 0x02 | 0x08 | 0x10, -1, 0); 
    var date = new Date(); 
    var TimeStamp = date.toLocaleString(); 
    var StartTime = "LoginTime=" + TimeStamp + " at " + ThisComputerName + "\r\n"; 
    fos.write(StartTime, StartTime.length); 
    var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService); 
    observerService.addObserver(Tdatacounter, "http-on-examine-response", false); 
}} 

Tdatacounter.prototype.classID = components.ID('{d4a9bb50-b9b2-11e0-a4dd-0800200c9a66}'); 
Tdatacounter.prototype.classDescription = 'tdata Counter'; 
Tdatacounter.prototype.contractID = '@tdata/TdataCounter;1'; 
var NSGetFactory = XPCOMUtils.generateNSGetFactory([TdataCounter]); 

回答

0

我想通了什麼我已經錯過了。作爲Firefox的初學者,我錯過了添加'註冊','取消註冊'的功能。我做了一個多麼愚蠢的錯誤?唷。無論如何,我希望這個答案對像我這樣的新手會有所幫助。 謝謝。

相關問題