2009-06-23 15 views
9

Firefox ile kullanmak için özel bir .pac komut dosyası yazıyorum. Gördüğüm çok sayıda örnek, ben hata ayıklamak için alert() s intersperse, ancak betik açıkça çağrılsa bile, hiçbir uyarı açılır. (Komut dosyasındaki her değişiklikten sonra "Bağlantı ayarları" nda "Yeniden Yükle" yi tıklıyorum. Firefox'u yeniden başlatmayı bile denedim.)Hata ayıklama autoproxy (PAC) javascript ile birlikte alert()?

PAC komut dosyalarından çalışılması gereken uyarılar var mı? Belki bu sadece bir IE özelliğidir?

cevap

9

http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsProxyAutoConfig.js

uyarı fonksiyonu sanal alanına eklenir:

80   // add predefined functions to pac 
81   this._sandBox.importFunction(myIpAddress); 
82   this._sandBox.importFunction(dnsResolve); 
83   this._sandBox.importFunction(proxyAlert, "alert"); 

Ve eşlenen işlev çağrıları Hata Konsolu gider, dökümü:

108 function proxyAlert(msg) { 
109  msg = XPCSafeJSObjectWrapper(msg); 
110  try { 
111   // It would appear that the console service is threadsafe. 
112   var cns = Components.classes["@mozilla.org/consoleservice;1"] 
113        .getService(Components.interfaces.nsIConsoleService); 
114   cns.logStringMessage("PAC-alert: "+msg); 
115  } catch (e) { 
116   dump("PAC: proxyAlert ERROR: "+e+"\n"); 
117  } 
+0

İlginç. Neden tek taraflı olarak uyarıları günlük dökümlerine dönüştürdüğümü merak ediyorum. Böyle düşük seviyeli bir operasyon sırasında uyarıların atılması kabul edilemez olarak kabul edilir. –

+0

Evet. Onun spec değil, bu şimdiye kadar bulduğum herhangi bir PAC hata değil (Netscape/AOL/Mozilla için Proxy ve PAC test ettim). Biz değişime uğrayabiliriz ... – benc

+1

Bu uyarı() büyük olasılıkla bir Window nesnesi gerektiriyor ve ağ düzeyinde bir operasyon olmakla birlikte, kesinlikle bir Window nesnesi yok. Henüz bir TCP bağlantısı bile yok, PAC betiği nasıl bağlanacağımıza karar verdiğinden ... –

1

Windows kayıt defterinde "EnableAutoproxyResultCache" özelliğini devre dışı bırakmanız gerekebilir. . .

+1

http://support.microsoft.com/kb/271361 adresine göre, bu bir IE özelliğidir. Bu anahtar kayıt defterinde herhangi bir yerde görünmüyor ve Firefox'u etkileyeceğinden şüpheliyim. –

3

Ah Ha! Uyarı mesajları konsola kaydediliyor. Aslında, popupları uyarmak için tercih ederim.

0
  1. Kullanımı alert, .pac dosyanızla uyumlu.

    • yılında Firefox Tarayıcı:

      Araçlar ->Web Geliştiricisi ->Tarayıcı Konsolu (Ctrl + Shift + J) [Bu değil Web Konsolu !! ] -> Filtre çıkışı: PAC-alert

    • Chrome Tarayıcı: -

      chrome://net-internals/#events bilgi ile bir rekora> Arama: PAC_JAVASCRIPT_ALERT

      (Bu yanıt için Krom sayesinde hakkında: https://serverfault.com/a/738871)


Numune .pac dosyası:

function FindProxyForURL(url, host) { 
    alert("url = " + url + " *** host = " + host + " *** Resolved IP = " + dnsResolve(host)); 

    return "DIRECT"; 
} 
+0

doğru bağlantı chrome: // net-internals/# olay – claya

+0

@claya Bağlantı doğru. Ancak, üzerine tıklarsanız, tarayıcınız muhtemelen düzenlenmiş bir bağlantı yüklemeye çalışır. Sadece ** kopyalayıp adres çubuğuna yapıştırın. –

İlgili konular