2011-06-07 17 views
12

me pregunto si hay alguna manera de hacer algo como eso: Si estoy en un sitio específico, quiero que algunos archivos javascript se carguen directamente desde mi computadora (fe file: /// c: /test.js), no del servidor.Extensión de Chrome, reemplace HTML en código de respuesta antes de que el navegador lo muestre

Para eso estaba pensando si existe la posibilidad de hacer una extensión que podría cambiar el código HTML en una respuesta que el navegador obtiene justo antes de mostrarlo. Así que todo el proceso debe ser similar a lo siguiente:

  1. solicitud se hace
  2. navegador recibe respuesta del servidor
  3. #response se ha cambiado # - esta es la parte en la extensión viene en
  4. navegador de análisis cambió respuesta y mostrar página con esa nueva respuesta.

Ni siquiera tiene que ser una extensión de Chrome de todos modos. Simplemente debería hacer el trabajo descrito anteriormente. Puede bloquear el archivo original y servir otro (DNS/proxy?) O filtrar todo el tráfico HTTP en mi computadora y reemplazar el código específico por otro de respuesta coincidente.

Respuesta

4

Puede usar el WebRequest API para lograr eso. Por ejemplo, se puede añadir un detector onBeforeRequest y reorientar algunas peticiones:

chrome.webRequest.onBeforeRequest.addListener(function(details) 
{ 
    var responseData = "<div>Some text</div>" 
    return {redirectUrl: "data:text/html," + encodeURIComponent(responseData)}; 
}, {urls: ["https://www.google.com/"]}, ["blocking"]); 

Esto mostrará un elemento <div> con el texto "texto" en lugar de la página principal de Google. Tenga en cuenta que solo puede redirigir a las URL a las que el servidor web puede redirigir. Esto significa que no es posible redirigir a file:/// URL, y solo puede redireccionar a archivos dentro de su extensión si estos son web accessible. data: y http: Las URL funcionan bien, sin embargo.

1

En Windows puede usar el Proxomitron (proxomitron.info) que es un proxy local que puede interceptar cualquier página o archivo que esté cargando en su navegador y cambiarlo utilizando expresiones regulares (sin análisis DOM) como quiera, antes de es renderizado por el navegador.

Cuestiones relacionadas