Quiero escribir una extensión web que envíe contenido json falso al acceder a cualquier URL que coincida con un patrón.
Empecé con el documento de MSDN.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/ondata
el código es bastante sencillo
function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let decoder = new TextDecoder("utf-8"); let encoder = new TextEncoder(); filter.ondata = event => { let str = decoder.decode(event.data, {stream: true}); // Just change any instance of Example in the HTTP response // to WebExtension Example. str = str.replace(/Example/g, 'WebExtension Example'); filter.write(encoder.encode(str)); filter.disconnect(); } } browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.com/*"], types: ["main_frame"]}, ["blocking"] ); Pero esto no es lo que.
No quiero (esperar entonces) alterar el contenido. Quiero impulsar mi contenido de inmediato.
Así que cambié el oyente por
filter.onstart = event => { var url = event. ??? if (url.indexOf("any string I'd like to look for")) { filter.write(encoder.encode("some text to display")); filter.close(); } else // I'm not interested in you, just process as usual { filter.disconnect() } } Mi objetivo es capturar cualquier URL, buscar un patrón en ella y mostrar mi contenido si coincide.
¿Está buscando onstart la forma correcta de hacerlo?
En caso afirmativo, encontré extraño que buscar en Google no devuelve más ejemplos y no puedo encontrar el documento para el evento que ocurre para el inicio.
¿Cómo se llama este evento? ¿Dónde puedo encontrar el documento (y los eventos que ocurrieron en los datos al cerrar...)?
Si no,
cuál será la forma correcta para que una extensión web intercepte una solicitud de página para enviar (o no) su contenido.
¿Funcionará mi idea de sustitución de página si estoy usando Ajax/fetch para obtenerla?
¿Podré configurar el tipo MIME también? (Quiero enviar contenido json)