使用JavaScript函数更改功能

时间:2013-06-12 07:43:28

标签: javascript ajax xajax

我有一个不属于我的网站。有很多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函数?

2 个答案:

答案 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