2011-07-28 15 views
7
Ben bazı sorunlarla geçenlerde Firefox eklentisi geliştirme üzerine çalışıyor ve ran ettik

: Küresel içinde,Firefox uzantısı hata ayıklamak için nasıl

<overlay id="sample" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
    <script src="jquery.js" /> 
    <script src="global.js" /> 
</overlay> 

Yani:

Yani, browser.xul i bu satırları tanımlanmış js ı tüm jQuery şeyler erişebilir ve orada basit bir komut dosyası yüklemeye çalışırken:

var inner = null; 
var o = function() { 
    var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); 
    return { 
     init : function() { 
      alert('here loading inner..'); 
      $.get('http://www.example.com/script.js', function(d) { 
       alert('loaded inner script!'); 
       inner = d; 
       gBrowser.addEventListener("load", function() { 
        alert('onload'); 
       }, false); 
      }).error(function(e) { alert('error loading inner..'); setTimeout(o.init,1000); }); 
      $(this).ajaxError(function() { alert('ajaxError'); }); 
     } 
    } 
} 
window.addEventListener("load", o.init, false); 

Ama ne ben bir "yüklü iç komut" alıyorsunuz, ne de bir uyarı "hata iç yükleniyor" .. ve ben don hatayı görmüyorum uzantıdan herhangi bir hatayı günlüğe kaydetme ... $.get bazı kısıtlamalar nedeniyle sessizce başarısız olduğunu varsayabilirim, ancak hataların normal olarak hata ayıklaması için uygun bir yol var mı? Hata konsolu uzatma için sessiz, sadece web sayfalarından hataları gösterir Genelde

+0

Alex, umarım bu XHR'nin sonuçlarını senaryo olarak değerlendirmiyorsunuzdur değil mi? –

+0

evet, ancak temel olarak addon'un "otomatikleştirilebilir" olması nedeniyle yapıldığı - bunun kötü olduğunu biliyorum, bunu günlük hayatta asla yapmam, ancak bu özel projede, sadece –

+4

'u bulmam gerekiyordu. Tarayıcıya bir güvenlik deliği yerleştiriyorsunuz. Örneğin, güvenilir olmayan bir wifi bağlantısında böyle bir tarayıcı kullanan herkes, wifi yönlendiricisinin keyfi bir betiği krom içine enjekte etmesine izin verir. En azından SSL kullan! –

cevap

7

o

javascript.options.showInConsole = true dahil olmak üzere bazı tercihlerini ayarlama önerir. Hata dosyalarını, krom dosyalarındaki hataları günlüğe kaydeder.

+0

tamam şimdi çok daha iyi olacak, ben showInConsole ile deneyeceğim ve o hatalar –

+0

çalıştığı göreceksiniz! Ben şimdi çok daha kolay yardımcı oldu demek, ben ham xmlhttprequest ile $ .get yerini ve şimdi haddeleme :) teşekkürler :) –

+3

Kesme noktaları ile hata ayıklama almak için herhangi bir yolu var mı? Bir hata konsolu, ilaçlar üzerindeki bir katır kadar faydalıdır. (ama evet, hala hiç yoktan iyidir) – balupton

3

o belge HTML DOM bir XML ziyade olduğunu varsayar çünkü bir XUL sayfasında JQuery kullanarak sorunlu olabilir DOM ve window, bir XUL penceresinden ziyade bir HTML penceredir. Yerinde olsaydım bunun için subscript loader kullanırdım. Hata ayıklamak için Venkman kullanabilirsiniz, ancak biraz flakey olsa ve genellikle konsola sadece dump() ifadelerine başvuruyorum.

Güncelleme:Browser Toolbox ile ilgili olarak aşağıdaki yorumuma bakın. Makalede https://developer.mozilla.org/en/Setting_up_extension_development_environment bakarsak

+0

loadSubScript'in harici URL'leri yükleyemediğini görüyoruz ("Yüklenecek betiğe işaret eden URL. Yerel bir chrome :, resource: or file: URL" olmalıdır). com/myscript.js .. –

+0

Venkman şimdi Firefox'ta bulunan Tarayıcı Hata Ayıklayıcısı'nda olduğu kadar kararlı/kullanılabilir değil. – NoBugs

+0

Evet, tüm bu soru şu anda güncel değil. Yeni bir yenilik olduğunu kabul ettiğim [Tarayıcı Araç Kutusu] (https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox) (eskiden Browser Debugger) hakkında yeni bir cevap vermelisiniz. bir yıldan az bir süre için ve her sürümle birlikte ayıcık oluyor. –

İlgili konular