我正在为 Firefox、Safari、Chrome 开发一个浏览器插件,它将拦截页面上的数据,针对正则表达式运行它,然后如果匹配,则重新格式化它。我使用以下方法在页面加载上进行此操作:
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);
这适用于静态页面,但对于使用 ajax 调用的任何内容,它都会失败。我找不到正确的侦听器或弄清楚如何拦截 XMLHttpRequest。
我尝试过类似的 XMLHttpRequest 事件侦听器,但没有成功。
XMLHttpRequest.addEventListener('load', meth.run, false);
我想拦截请求并修改内容。或者找到更新的目标并在ajax调用完成后扫描它。
UPDATE:
我会接受一个说它无法完成的答案,但我需要一些支持数据来解释为什么它无法完成。