2016-04-21 9 views
0

Ich bin ein ajaxToolkit:SliderExtender in einem UpdatePanel wie so mit:AjaxToolkit SliderExtender erzeugt JavaScript-Ausnahmen in 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> 

funktioniert in Rand, Firefox und Chrome, aber erzeugt die folgende Ausnahme in IE11:

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

von this post schaute ich auf die Kompatibilitätseinstellungen und von this post ich habe unterverschiedene Kombinationen der <meta http-equiv="X-UA-Compatible" content="..." /> Tag ... alles versuchtbricht andere Dinge in der Website und IE=11 und IE=edge beide geben mir die Ausnahme.

Ich habe ein sauberes ASP.NET WebForms-Projekt erstellt, um zu sehen, ob ich das Problem isolieren kann, aber der Slider funktioniert in diesem Projekt, daher gibt es wahrscheinlich einige Einstellungen in meinem Projekt, die das Problem verursachen. Irgendwelche Ideen, wo ich anfangen sollte zu suchen? Vielen Dank.

Antwort

0

Ich habe eine Problemumgehung. Im Debugger kann ich sehen, was JavaScript die Ausnahme wirft. So verwende ich Justins Code von this SO post zu erkennen, ob der Client IE ... wenn es ist, dann mache ich folgendes:

(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)); 
     } 
    } 
}()); 

Es wäre noch gut zu wissen, warum ich immer diese Ausnahme in mein Produktionscode aber nicht im sauberen Projekt, aber zumindest arbeite ich jetzt.