2013-06-12 118 views
2

我有一个不是我的网站。有很多JavaScript函数可以进行ajax调用。我想知道是否有可能修改这些函数,以便在调用JavaScript函数成功完成Ajax请求之后。也许有可能注入另一个Ajax查询结果代码处理程序?使用JavaScript功能改变功能

更新

也许我应该补充更多的东西......这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

你的意思是,所以他们得到执行该网站的每个用户?不是没有黑客的服务器,没有。 –

+0

不,不。只为我 - 没有黑客;)我想要例如注入代码,每个Ajax成功播放声音或为了使其更简单 - 显示警报对话框。 – karex

+2

如果它只是为你,你可能会考虑铬扩展:http://stackoverflow.com/questions/8559482/intercept-javascript-requests-with-chrome-extension – izb

回答

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功能。

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