我正在为Firefox,Safari,Chrome浏览器插件工作,它将截取页面上的数据,对正则表达式运行它,然后匹配 - 重新格式化它。我有这个工作页面加载使用:检索和修改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);
这是工作的静态页面,但任何使用ajax调用,它失败。我无法找到正确的侦听器或找出如何拦截XMLHttpRequest。
我已经尝试过XMLHttpRequest类似的事件侦听器,但没有运气。
XMLHttpRequest.addEventListener('load', meth.run, false);
我想拦截请求并修改内容。或者找到已更新的目标,并在ajax调用完成后对其进行扫描。
UPDATE:
我会接受,说不能做的答案,但我需要一些支持数据,为什么它不能做。
你是对的,很脏 - 但如果最糟糕的事情你可以说它是有效的......我会测试一下,看看我能发生什么。 – 2011-06-03 16:46:20
谢谢,它的成果相当不错 - 我欣赏创意的方法! – 2011-06-06 02:28:58
@galambalazs不错!我使用你的代码为请求的url添加自定义参数。我也做了一些小改动来提供IE兼容性:'var XHR = typeof XMLHttpRequest!='undefined'? XMLHttpRequest:ActiveXObject; XHR.prototype.open = ...'。如果我错了,请告诉我。 – leaf 2013-07-08 13:27:10