您可以爲原型Ajax請求的onLoading事件全球註冊一個所謂的Ajax.Responder。這會針對您網頁中的每個remoteFunction/Ajax調用觸發。要做到這一點,你應該把這樣的地方到你的GSP頁面或佈局:
<script type="text/javascript">
function showSpinner() {
// TODO show spinner
}
function hideSpinner() {
// TODO hide spinner
}
Ajax.Responders.register({
onLoading: function() {
showSpinner();
},
onComplete: function() {
if(!Ajax.activeRequestCount) hideSpinner();
}
});
</script>
你需要執行過程中的showSpinner和hideSpinner功能。作爲一個完整的例子,你可以使用類似:
<script type="text/javascript">
function showSpinner() {
$('spinner').show();
}
function hideSpinner() {
$('spinner').hide();
}
Ajax.Responders.register({
onLoading: function() {
showSpinner();
},
onComplete: function() {
if(!Ajax.activeRequestCount) hideSpinner();
}
});
</script>
<div id="spinner" style="display: none;">
<img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Loading..." width="16" height="16" />
</div>