2013-06-12 116 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