Estoy trabajando en un complemento de navegador para Firefox, Safari, Chrome que interceptará datos en la página, lo ejecutará contra una expresión regular y luego, si coincide, volverá a formatearlo. Tengo este trabajo sobre la carga de la página usando:Recuperar y modificar el contenido de un XMLHttpRequest
var meth = {
replaceInElement : function(element, find, replace) {
// iterate over child nodes and replace
},
run : function(evt){
// doc is the document that triggered "run" event
if (!(evt.target.nodeName === "#document")) { return; }
var doc = evt.target; // document that triggered "onload" event
if (!(doc instanceof HTMLDocument)) { return; }
if (!doc.location) { return; }
// perform substitutions on the loaded document
var find = /regex/gi
meth.replaceInElement(doc.body, find, function(match) {
var new_content;
//do stuff
return new_content;
});
//content.document.addEventListener('DOMNodeInserted', ezcall.node_inserted, false);
}
}
window.addEventListener("load", meth.run, false);
Esto funciona para las páginas estáticas, pero para nada el uso de las llamadas ajax, falla. No puedo encontrar al oyente correcto o averiguar cómo interceptar el XMLHttpRequest.
He intentado oyentes de eventos similares para XMLHttpRequest sin suerte.
XMLHttpRequest.addEventListener('load', meth.run, false);
Me gustaría interceptar la solicitud y modificar el contenido. O encuentre el objetivo que se actualizó y escanee después de que finalice la llamada ajax.
ACTUALIZACIÓN:
voy a aceptar una respuesta que dice que no se puede hacer, pero necesitaré algunos datos que explique por qué no se puede hacer.
Tienes razón, bastante sucio, pero si lo peor que puedes decir es que funciona ... Voy a probar esto y ver qué puedo hacer para que suceda. –
Gracias, funcionó bastante bien. ¡Aprecio el enfoque creativo! –
@galambalazs ¡Agradable! Uso su código para agregar parámetros personalizados a la URL de la solicitud. También hice un pequeño cambio para proporcionar compatibilidad con IE: 'var XHR = typeof XMLHttpRequest! = 'Undefined'? XMLHttpRequest: ActiveXObject; XHR.prototype.open = ... '. Por favor, avíseme si me equivoco. – leaf