接受Javascript警报后,IE 11会暂时冻结

时间:2015-02-11 20:01:47

标签: javascript asp.net

Asp.Net 4.5

应用程序具有在回发(服务器端)上以编程方式计算的具有最小值和最大值的文本框,如果超过限制,我将从服务器代码调用js函数。适用于Chrome,FF。但在IE浏览器中冻结大约。用户在警告框中单击[确定]后2分钟。大约2分钟后,它允许用户再次开始输入。如果我注释掉警告框,那么它在IE中工作正常。知道什么会导致这只在IE?

服务器端调用JS

If sender IsNot Nothing And TypeOf sender Is TextBox Then
   CType(sender, TextBox).Attributes.Add("onblur", "MinMaxBlurServer(this," & min & "," & max & ");")
End If

JavaScript函数

function MinMaxBlurServer(obj, hfmin, hfmax) {
   var txt = obj;
   var val = txt.value;
   var m = document.getElementById("MainContent_minmaxpanel");
   m.style.display = 'none';

   if (isNumber(val) == "") {
     if (val != "") {
        //alert("Invalid enery. You must enter a numeric value!");
        txt.value = "";
     }
   } else {
     if (isNumber(hfmin)) {
        if (parseFloat(val) < parseFloat(hfmin)) {
            //alert("Value cannot be less than " + hfmin + ".");
            txt.value = hfmin;
        }
     }
     if (isNumber(hfmax)) {
        if (parseFloat(val) > parseFloat(hfmax)) {
            //alert("Value cannot be greater than " + hfmax + ".");
            txt.value = hfmax;
        }
     }
   }
}
function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}

1 个答案:

答案 0 :(得分:0)

通过将警告框方法包装在window.setTimeout中解决了该问题。有关完整的详细信息,请参阅link。示例如下。

window.setTimeout(function () { alert("Value cannot be less than " + hfmin + "."); }, 0);