私のコードは実際にはクロムで非常にうまく機能しますが、IE でのテストは失敗します:/ e.element().hide() および e.element().insert() は機能しません。Ajax.Request() は両方のブラウザーで正常に動作しています。修正方法はありますか?
$$('a.deleteButton').invoke('observe', 'click', function(e) {
var commentID = parseInt(this.readAttribute('data-commentid'));
e.stop();
new Ajax.Request('index.php?action=CNewsComment',
{
method: 'POST',
parameters: {entryID: commentID, cNewsAction: 'delete'},
onSuccess: function(transport){
new Effect.toggle('commentID' + commentID, 'Appear', {duration:0.5});
var count = parseInt($('commentsCount').innerHTML.stripTags());
$('commentsCount').innerHTML = count-1;
},
onLoading: function(transport){
e.element().hide(); //not working in IE but in Chrome
if ($('deleteLoading' + commentID)) {
$('deleteLoading' + commentID).show();
}
else {
e.element().up().insert ({
'before' : '<img id="deleteLoading' + commentID + '" src="' + RELATIVE_WCF_DIR + 'images/cNewsSpinnerS.gif" alt="" />'
});
}
},
onFailure: function(transport){
e.element().show();
$('deleteLoading' + commentID).hide();
alert("An error occurred: " + transport.status + ' - ' + transport.statusText);
}
});
});
更新: IE で動作しないコードを AJAx-Request の外に置くと、動作します:
$$('a.deleteButton').invoke('observe', 'click', function(event) {
event.stop();
// IE PART START
event.element().hide();
if ($('deleteLoading' + commentID)) {
$('deleteLoading' + commentID).show();
}
else {
event.element().up().insert ({
'before' : '<img id="deleteLoading' + commentID + '" src="' + RELATIVE_WCF_DIR + 'images/cNewsSpinnerS.gif" alt="" />'
});
}
// IE PART END
new Ajax.Request('index.php?action=CNewsComment',
{
method: 'POST',
parameters: {entryID: commentID, cNewsAction: 'delete'},
onLoading: function(transport){
}
しかし、onLoading 関数内ではそうではありません。