我正在爲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