0
任何我可以攔截和修改通過ajax加載的javascript的方法?jQuery ajax,在它被評估之前攔截腳本
我需要能夠將腳本查詢字符串解析爲變量,並在評估之前預先添加它們。
我爲jQuery 1.4所做的一些代碼,但這不再適用於1.5,並不是特別好。
var oHttpData = jQuery.httpData, oGlobalEval = jQuery.globalEval, evalUrl = null;
jQuery.extend({
httpData: function(xhr, type, s) {
if (type === "script")
evalUrl = s.url;
console.log(type);
console.log(s);
var data = oHttpData.apply(this, [xhr, type, s]);
evalUrl = null
return data;
},
globalEval: function(data) {
if(evalUrl != null && evalUrl.indexOf('?') !== -1) {
var matches = evalUrl.match(/.*?\?|([\w]*)([\w\+%\.]*)[^&$]/ig), str = '(function() { var ';
for (var i = 1; i < matches.length; ++i)
str += matches[i] + '\'' +
(matches[i + 1] && !(/=/g).test(matches[i + 1]) ? decodeURIComponent(matches[(i++) + 1]) : '') + '\'' +
(i != matches.length - 1 ? ',' : ';');
data = str + data + '})();';
}
oGlobalEval.apply(this, [data]);
}
});
這將趕上腳本只是EVAL之前並與查詢字符串作爲變量封閉包裹。
在Ajax加載完成後,是否更容易將init函數作爲回調調用? – 2011-04-06 16:50:44