2009-06-23 12 views
9

Estoy escribiendo un script .pac personalizado para usar con Firefox. Siguiendo numerosos ejemplos que he visto, intercalo alert() s para depurarlo, pero no hay alertas emergentes, aunque el script se está invocando claramente. (Hago clic en "Volver a cargar" en la "Configuración de conexión" después de cada cambio en el script. Incluso he intentado reiniciar Firefox.)depuración autoproxy (PAC) javascript con alerta()?

¿Se supone que las alertas funcionan desde los scripts de PAC? Tal vez esta es una característica solo de IE?

Respuesta

9

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

La función de alerta se añade a la caja de arena:

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

Y las llamadas a funciones asignadas volcado, que va a la consola de error:

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

Interesante. Me pregunto por qué convierten unilateralmente las alertas a los volcados de registro. Supongo que mostrar alertas durante una operación de tan bajo nivel se considera inaceptable. –

+0

Sí. No está en la especificación, no está en ningún error de PAC que haya encontrado (probé Proxy y PAC para Netscape/AOL/Mozilla). Podríamos ir a buscar en el registro de cambios ... – benc

+1

Se me ocurre que la alerta() probablemente requiera un objeto Window, y al ser una operación a nivel de red, ciertamente todavía no hay ningún objeto Window. Ni siquiera hay una conexión TCP todavía, ya que el script PAC está ayudando a decidir cómo vamos a conectar ... –

1

Es posible que necesite deshabilitar "EnableAutoproxyResultCache" en el registro de Windows. . .

+1

De acuerdo con http://support.microsoft.com/kb/271361, esa es una característica de IE. Esa clave no aparece en ningún lugar de mi registro, y dudo que afecte a Firefox. –

3

¡Ah, ja! Los mensajes de alerta se registran en la consola. De hecho, prefiero que alertar a las ventanas emergentes de todos modos.

0
  1. Uso alert funciona en su archivo .pac.

    • En Firefox Navegador:

      Herramientas ->Web Developer ->navegador de la consola (Ctrl + Shift + J) [Esto no es consola Web !! ] -> Salida del filtro: PAC-alert

    • En Cromo Navegador:

      chrome://net-internals/#events -> Buscar un registro con la descripción: PAC_JAVASCRIPT_ALERT

      (sobre Chrome gracias por esta respuesta: https://serverfault.com/a/738871)


Muestra .pac archivo:

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

    return "DIRECT"; 
} 
+0

El enlace correcto es chrome: // net-internals/# events – claya

+0

@claya El enlace es correcto. Pero si hace clic en él, su navegador intenta cargar un enlace editado, probablemente. Simplemente ** cópielo y péguelo ** en su barra de direcciones. –

Cuestiones relacionadas