AjaxToolkit SliderExtender 在 IE11 中生成 JavaScript 个异常

AjaxToolkit SliderExtender generates JavaScript exceptions in IE11

我在 UpdatePanel 中使用 ajaxToolkit:SliderExtender,如下所示:

<asp:UpdatePanel ID="upSlideshow" runat="server">
    <ContentTemplate>
        <asp:TextBox ID="txtSlideBackgroundOpacity" runat="server"
            ReadOnly="true"
            ToolTip="Adjust the opacity of the background (0 is fully transparent, 100 is fully opaque)"
            OnTextChanged="txtSlideBackgroundOpacity_TextChanged"
            AutoPostBack="true" />
        <br />
        <asp:TextBox ID="txtOpacitySlider" runat="server" />
        <ajaxToolkit:SliderExtender ID="seSlideBackgroundOpacity" runat="server"
            TargetControlID="txtOpacitySlider"
            BoundControlID="txtSlideBackgroundOpacity" />
    </ContentTemplate>
</asp:UpdatePanel>

在 Edge、Firefox 和 Chrome 中工作正常,但在 IE11 中生成以下异常:

0x800a139e - JavaScript runtime error: Sys.ArgumentOutOfRangeException: Value must be an integer.

来自this post I looked at compatibility settings, and from this post 我已经尝试了 <meta http-equiv="X-UA-Compatible" content="..." /> 标签的各种组合...IE=11 以下的任何内容都会破坏网站中的其他内容,并且 IE=11IE=edge 都会给我例外。

我创建了一个干净的 ASP.NET WebForms 项目以查看是否可以隔离问题,但该滑块在该项目中有效,因此我的项目中可能有一些设置导致了问题。我应该从哪里开始寻找任何想法?谢谢。

我有一个解决方法。在调试器中,我可以看到 JavaScript 抛出了异常。所以,我使用来自 this SO post 的 Justin 代码来检测客户端是否是 IE...如果是,那么我执行以下操作:

(function () {
    // if we're running internet explorer, we need to fix one of the internal routines to allow for the SliderExtender control to work
    var nIEVersion = internetExplorerVersion();

    if (nIEVersion && nIEVersion <= 11) {
        var originalSetLocation = Sys.UI.DomElement.setLocation;

        Sys.UI.DomElement.setLocation = function (element, x, y) {
            originalSetLocation(element, Math.floor(x), Math.floor(y));
        }
    }
}());

最好知道为什么我在生产代码中遇到此异常,但在 clean 项目中却没有,但至少现在我正在工作。