2009-06-23 6 views
9

Sto scrivendo uno script personalizzato .pac da utilizzare con Firefox. Seguendo numerosi esempi che ho visto, ho intersperso alert() s per eseguire il debug, ma nessun popup di avvisi, anche se lo script viene chiaramente richiamato. (Sto facendo clic su "Ricarica" ​​in "Impostazioni connessione" dopo ogni modifica al mio script. Ho anche provato a riavviare Firefox.)Debug di autoproxy (PAC) javascript con alert()?

Gli avvisi dovrebbero funzionare dagli script PAC? Forse questa è una funzionalità solo IE?

risposta

9

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

La funzione di allarme viene aggiunto alla sandbox:

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

E le chiamate di funzione mappati discarica, che va alla console Errore:

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

Interessante. Mi chiedo perché convertano unilateralmente gli avvisi in log dump. Suppongo che gli avvisi di popping durante un'operazione di così basso livello siano considerati inaccettabili. –

+0

Sì. Non è nelle specifiche, non è in alcun bug PAC che abbia mai trovato (ho testato Proxy e PAC per Netscape/AOL/Mozilla). Potremmo andare a scavare nel registro dei cambiamenti ... – benc

+1

Mi sembra che alert() richieda probabilmente un oggetto Window, ed essendo un'operazione a livello di rete, non c'è sicuramente ancora nessun oggetto Window. Non c'è ancora nemmeno una connessione TCP, dal momento che lo script PAC sta aiutando a decidere come connettersi ... –

1

Potrebbe essere necessario disabilitare "AbilitaAutoproxyResultCache" nel registro di Windows. . .

+1

Secondo http://support.microsoft.com/kb/271361, questa è una funzionalità di IE. Quella chiave non appare da nessuna parte nel mio registro, e dubito che ciò influirebbe su Firefox. –

3

Ah Ah! I messaggi di avviso vengono registrati nella console. In realtà preferisco comunque avvisare i popup.

0
  1. Usa Funzione alert nel file .pac.

    • In Firefox Browser:

      Strumenti ->Web Developer ->Browser Console (Ctrl + Shift + J) [Questo non è Web Console !! ] -> Uscita filtro: PAC-alert

    • In Chrome Browser:

      chrome://net-internals/#events -> Cerca un record con descrizione: PAC_JAVASCRIPT_ALERT

      (A proposito di Chrome grazie per questa risposta: https://serverfault.com/a/738871)


Esempio .pac di file:

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

    return "DIRECT"; 
} 
+0

collegamento corretto è chrome: // net-internals/# events – claya

+0

@claya Il collegamento è corretto. Ma se si fa clic su di esso, il browser tenta di caricare un collegamento modificato, probabilmente. Semplicemente ** copia e incolla ** nella barra degli indirizzi. –