我有一个不属于我的网站。有很多JavaScript函数可以进行ajax调用。我想知道是否有可能修改这些函数,所以在成功调用ajax之后调用我的JavaScript函数。也许有可能注入ajax查询结果代码的另一个处理程序?
更新
也许我应该添加更多内容......这个ajax调用是通过使用xajax库实现的。我找到了这样一段代码:
<script type="text/javascript" charset="UTF-8">
/* <![CDATA[ */
try { if (undefined == xajax.config) xajax.config = {}; } catch (e) { xajax = {}; xajax.config = {}; };
xajax.config.requestURI = "xajax_loader.php";
xajax.config.statusMessages = false;
xajax.config.waitCursor = true;
xajax.config.version = "xajax 0.5 rc1";
xajax.config.legacy = false;
xajax.config.defaultMode = "asynchronous";
xajax.config.defaultMethod = "POST";
/* ]]> */
</script>
我不知道xajax库,但也许有一种方法可以添加一些东西来配置,所以成功后的请求调用JavaScript函数?
答案 0 :(得分:1)
可以替换javascript函数定义。这是一些简单的代码:
<script>
function xyz() {alert('xyz');}
</script>
<body>
<button onclick="xyz();">Run xyz</button>
<button onclick="alert(xyz);">Show xyz</button>
<button onclick="xyz=function(){alert('xxxxyz');};">Replace xyz</button>
</body>
我创建了一个小提琴http://jsfiddle.net/k565L/来试试这个。 但我不知道是否可以替换跨站点的javascript函数。
答案 1 :(得分:0)
源代码可在此处获取:https://github.com/Xajax/Xajax/blob/master/xajax_js/xajax_core_uncompressed.js
您可能会考虑这样做:
xajax.origCompleteResponse = xajax.completeResponse;
xajax.completeResponse = function(oRequest) {
// Here you could do anything you want.
// For example check the request object:
console.log(oRequest);
// And then return a call to the original function:
return xajax.origCompleteResponse.apply(xajax.origCompleteResponse, arguments);
};
另一种做同样事情的方法:
(function() {
var super = xajax.completeResponse; // You can use any variable name you like.
xajax.completeResponse = function(oRequest) {
// Here you could do anything you want.
// For example check the request object:
console.log(oRequest);
// And then return a call to the original function:
return super.apply(super, arguments);
};
}());
请参阅此处的定义:https://github.com/Xajax/Xajax/blob/master/xajax_js/xajax_core_uncompressed.js#L3666