2016-04-21 1 views
0

Я использую ajaxToolkit:SliderExtender в UpdatePanel так:AjaxToolkit SliderExtender генерирует исключения JavaScript в IE11

<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> 

отлично работает в пограничном, Firefox и Chrome, но генерирует следующее исключение в IE11:

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

с this post я посмотрел на настройки совместимости, и от this post Я пробовал различные комбинации с <meta http-equiv="X-UA-Compatible" content="..." /> тегов ... все, что ниже IE=11 нарушает другие вещи на сайте и IE=11 и IE=edge оба дают мне исключение.

Я создал чистый проект ASP.NET WebForms, чтобы увидеть, могу ли я изолировать проблему, но слайдер работает в этом проекте, поэтому в моем проекте может возникнуть какая-то настройка, которая вызывает проблему. Любые идеи, где я должен начать искать? Благодарю.

ответ

0

У меня есть обходное решение. В отладчике я вижу, что JavaScript бросает исключение. Таким образом, я использую код Джастина из this SO post, чтобы обнаружить, является ли клиент 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)); 
     } 
    } 
}()); 

Было бы еще хорошо знать, почему я получаю это исключение в мой код производства, но не в чистом проекте, но по крайней мере сейчас я работаю.

Смежные вопросы