ええと、
イベントによってトリガーされたajax呼び出しのために、私は同じニーズを得ました。最も早い呼び出しが後で戻って、最後の呼び出しによって入力されたドキュメントを上書きする場合があります。
removeChild(scriptEl)
動作しません。属性の変更src
も機能しません。
が唯一の方法であり、サーバーの応答を制御できる場合jsonp
は、追加されたものを区別してコールバックに戻すことができます。
timestamp
パラメータを渡して、コールバックで確認するだけです
//callback
function dummy(res, ts) {
if(YAHOO.util.Selector.query('script[id='scriptIdPrefix+ts+']').length>0) {
do your job
} else {
do nothing
}
}
//add script
var scriptIdPrefix='myScriptId';
function ajaxCall() {
var timestamp = new Date().getTime();
var scriptId = scriptIdPrefix+timestamp;
//remove the previous script el
s=YAHOO.util.Selector.query('script[id^='+scriptIdPrefix+']');
if(s.length>0) {
document.body.removeChild(s[0]);
}
var script = document.createElement('SCRIPT');
script.id = scriptId;
script.type = 'text/javascript';
script.src = 'http://server/notify.js&callback=dummy&ts='+timestamp;
document.body.appendChild(script);
}
notify.js
それに応じてサーバーの結果を組み立てます。
dummy([{"datax":"x","datay":"y"}], 1369838562792)
このようにして、パラメトリックIDを持つこのようなスクリプト要素が1つだけ作成されます
<script id="myScriptId1369838562792" type="text/javascript"
src="http://server/notify.js?callback=dummy&ts=1369838562792"></script>