私はZend Frameworkアプリケーションを持っています。 IE8とjQueryに問題があるようですが、これはいくつかの(多くの)投稿の後に終わります。つまり、ポストの量が増えるにつれて悪化します。何が起こっているのか、ページをリロードせずにデータ入力をしている間に、ページをリロードしたりリロードしようとすると、IE8は本当に奇妙な/不快な/動揺した動作をします。ページを読み込みます。私がそこからリロードすると、それはリセットされ、すべてがしばらくの間うまく動作し、ビルドして再び起こります。IE8 jQuery AJAX weirdness
IE8でいくつか他のタブが開いているとしましょう - アプリケーションの別のページに移動しようとすると、IE8はリロードする前にもう少しタブとフリッカーを表示しますページを表示して表示します。私がこの時点でリロードすると、通常はあなたが期待することをします。私がこの時点でリロードしないと、次回に悪いことが増えてリロードしようとすると、IE8はこれ以上試してはいけないと言います。そして、ナビゲーションバーに手動でURLを入力しなければなりませんアプリケーションに戻ります。
私はそれが私のキー押下拘束と関係していると感じていますが、私はなぜそれがわかりません。他の誰かがこれを経験して、何がうまくいかないのか考え出しましたか?結合キー入力が発生したのはここ
は私$(document).ready()
機能です:
$(document).ready(function(){
running = false;
offset = $("#quantity").html();
$("#boxNumber").focus();
$(document).bind("keypress" , function(e){
var firstName = document.getElementById('firstName');
var middleName = document.getElementById('middleName');
if (e.which == 13 && (!$("#notes").is(":focus")) && (!$("#submit").is(":focus"))) {
if (running == false) {
running = true;
middleName.value = middleName.value.toUpperCase();
firstName.value = firstName.value.substring(0, 1).toUpperCase() +
firstName.value.substring(1, firstName.value.size);
submitForm();
return false;
} else {
return false;
}
} else if (e.which != 13 && $("#middleName").is(":focus") && $("#middleName").val() != '') {
firstName.focus();
firstName.value = firstName.value + " " + middleName.value.toUpperCase();
middleName.value = '';
}
});
bindTdClick();
bindAutoComplete('oof_name');
bindAutoComplete('pro_title');
bindAutoComplete('tags');
$("#submit").click(function(){
if (running == false) {
running = true;
submitForm();
} else {
return false;
}
});
});
問題もsubmitForm()
機能であることmght:
function submitForm() {
$.post("/ajax/files" , $("#files").serialize(), function(data){
filesReset();
if (data != "") {
$("#lastInsert table tbody:last").prepend(data);
$("#lastInsert table tbody:last tr:first").find("td").hide();
$("#lastInsert table tbody:last tr:first").find("td").fadeIn(1000, function(){ bindTdClick(); });
$("#lastInsert table tbody:last tr:first").effect("highlight" , {"color": "aqua"}, 1000);
$("#lastInsert table tbody:last tr:last").remove();
} else {
alert("Insert rejected by the server: either inadequate criteria or the server is down.");
$("#hidden").click();
}
running = false;
});
}
または多分filesReset()
機能:
function filesReset(){
var lastName = $("#lastName").val();
if (lastName.indexOf(',') != -1) {
lastName = lastName.substring(0, lastName.indexOf(','));
}
$("#lastName").val(lastName).focus().select();
$("#firstName").val("");
$("#middleName").val("");
$("#fil_will_recorder_rec_id").val("");
$(".errors").remove();
$("#lastInsert table").css({"border-right":"1px solid #D9D9D9"});
$("#notes").val("");
//$("#tags").val("");
$("span").html("");
}
私はこれ以上良く分からないので、私は推測します。 – tjb1982
おそらくjQueryはjsですか?ネイティブのjavascriptは、ほとんどの場合、実際にはより高速です。どのような質問が... – SteamDev
一見して、間違っているとは見えませんが、あなたのコードのある時点で何かが何度も何度も同じアクション(おそらくkeypress)にバインドされていると思われます。いくつかのアラートやファイアウォールのブレークポイントを追加して、どのセグメントが繰り返し呼び出されているかを確認し、テストのためにIEに戻ることができます。 – Dave