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=11
和 IE=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 项目中却没有,但至少现在我正在工作。
我在 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=11
和 IE=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 项目中却没有,但至少现在我正在工作。