簡體   English   中英

在Mozilla附加SDK中使用第三方JS庫

[英]Using third-party JS libraries in Mozilla Add-On SDK

我正在開始一個新項目(Firefox附加組件),我想嘗試使用行為驅動的開發。 我特別喜歡Jasmine BDD庫。 但是,我找不到在Add-On SDK中使用Jasmine之類的框架的好方法。

一個問題是Jasmine需要在全局對象上指定setTimeout(和類似的)函數,而Add-On SDK使用“ timers”模塊導出那些函數。 但是,假設我調整了Jasmine以從“計時器”中獲取那些對象(或將計時器導出的方法添加到全局對象中)。

更大的問題是我不知道如何實際運行測試。 SDK會生成一個測試目錄,但是,那里沒有窗口或文檔對象可以讓我看到輸出(而且我真的很想看到精美的HTML輸出)。 我想我可以創建一個內容腳本來修改頁面,但是后來我無法訪問(測試)后台腳本。

您以前曾經面對過嗎? 有什么建議的方法如何處理嗎?

謝謝! 托馬斯

您可以使用Add-on SDK Windows API打開一個新窗口以運行測試。您應該能夠使用下標加載器加載 Jasmine腳本,並將窗口和文檔設置為您希望的范圍。下標:

var windows = require("windows").browserWindows;

windows.open({
  url: "about:blank",
  onOpen: function(window) {
    var script;
      var scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
        getService(Ci.mozIJSSubScriptLoader);
      scriptLoader.loadSubScript(subscriptSpec, script);
      script["window"] = window;
      script["document"] = window.document;
      // ... run your tests here by calling script.someFunc() ...
   }
});

更新:進一步的研究表明,瀏覽器Windows實際上是特殊的包裝,它們不能使您訪問內容窗口。 您可以嘗試從隱藏框架獲取窗口/文檔。 這是我看到的從特權代碼訪問HTML文檔的唯一方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM