Mi asp.net el sitio está funcionando bien en IE6, IE7, IE8, IE9, Chrome, Safari, Firefox y Opera. Pero no funciona en absoluto en IE10.

Si hago clic en cualquier lugar en el sitio (cualquier botón, cualquier enlace, etc) devuelve el siguiente error:

SCRIPT5022: Sys.ArgumentOutOfRangeException: Value must be an integer.
Parameter name: x
Actual value was 5.999999523162842. 

JS cosas, como las fichas, no funciona debido a este problema. He localizado el problema, y es en MicrosoftAjax.js , específicamente en el siguiente método.

Sys.UI.Point = function Sys$UI$Point(x, y) {
    /// <param name="x" type="Number" integer="true"></param>
    /// <param name="y" type="Number" integer="true"></param>
    /// <field name="x" type="Number" integer="true"></field>
    /// <field name="y" type="Number" integer="true"></field>
    var e = Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true}
    ]);
    if (e) throw e;

    this.x = x;
    this.y = y;

Funciona en todas las demás versiones de IE desde el 6, que es un buen destino.

Sé que el HTML es el único soportado por navegadores reales, dejando fuera a Internet Explorer, pero mi cliente quiere realmente el sitio de trabajo en IE10.

Sólo para ser claros, no funciona bien en ie6 a 9, chrome, firefox y opera. Ninguno de ellos se muestran los errores de javascript, sólo ie10, y este error sale en cada clic.
Yo no copule un seguimiento de quién está llamando a este método. Este es un gran sitio y ninguno de el código js que yo uso es el de una llamada. Creo que probablemente MicrosoftAjax.js marco ha obligado haga clic en el evento y es la ejecución de algo, pero no estoy seguro de lo que se está ejecutando.

Alguien me puede ayudar?

Puede que a la vuelta de los números (o los echaron como enteros con parseInt()) antes de llamar a su función?
¿De depuración? ¿Por qué es un flotador que se pasa? -1 por no mostrar due dilligence. Podría ser porque usted es multiplicar o dividir los números y llegar a la precisión de problemas, si es así a la vuelta de la serie
Este tipo de cosas por lo general sucede a mí cuando me han roto un plugin de jQuery o mala código JavaScript. ¿Tienes algo en la página que utiliza Ajax? ¿Ves algún código que tiene una referencia a algo que no existe? Si usted ve la página en Firefox o Chrome, no ves los errores cuando usted golpea Control-Shift-J?
Yo no podía saber quién está llamando a que los métodos. Yo no estoy llamando a ellos, es algo interno de MicrosoftAjax.js creo
Está usted usando iFrames? Este bloque de código ha causado algunos problemas, especialmente en las páginas con iFrames. forums.asp.net/t/1078598.aspx/1. También: support.microsoft.com/kb/936993

OriginalEl autor Tony | 2012-12-26

6 Comentarios

  1. 18

    He encontrado un buen solución blogueado por Yuriy:

    <script language="javascript">
        Sys.UI.Point = function Sys$UI$Point(x, y) {
    
            x = Math.round(x);
            y = Math.round(y);
    
            var e = Function._validateParams(arguments, [
                {name: "x", type: Number, integer: true},
                {name: "y", type: Number, integer: true}
            ]);
            if (e) throw e;
            this.x = x;
            this.y = y;
        }
    </script>

    Pegar esto en su página para reemplazar el Sys$UI$Punto de función para redondear los números.

    O bien, establecer <compilation debug="false">

    Cualquiera de estos trabajó para mí.

    OriginalEl autor Mafu Josh

  2. 5

    La respuesta está en el siguiente enlace:

    http://support.microsoft.com/kb/936993

    He tenido que cambiar Microsoft.Ajax.js.

    Estoy un poco triste yo no soy el único que sigue funcionando ASP.NET 2.0 de proyectos con Microsoft Extensiones de Ajax 1.0…me siento su dolor de hombre.
    Gracias Justin, es un dolor, de verdad.
    El artículo de KB que fue útil como punto de partida, pero después de su cambio de codificación yo todavía estaba recibiendo el error. Terminé cambiando más con las Matemáticas.round().
    Es de 2017, y en el que estoy trabajando .net 4.0 webforms., esta organización sólo puede vendaje de la aplicación durante tanto tiempo., pero hasta entonces, gracias por estas respuestas.

    OriginalEl autor Tony

  3. 3

    Sólo para añadir a mafu josh‘s respuesta, el obligado prototipo también puede ser el problema.

    Aquí está el código para que

    Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) {
        x = Math.round(x);
        y = Math.round(y);
    
        var e = Function._validateParams(arguments, [
            { name: "x", type: Number, integer: true },
            { name: "y", type: Number, integer: true },
            { name: "width", type: Number, integer: true },
            { name: "height", type: Number, integer: true }
        ]);
        if (e) throw e;
        this.x = x;
        this.y = y;
        this.height = height;
        this.width = width;
    }
    Me enfrenté a este problema con Telerik RadDock & RadWindow. Capaz de resolver con este código. Thx!

    OriginalEl autor Kelsey Abreu

  4. 1

    Tuve un problema similar; se resuelve después de la solución publicada aquí por nileshsaikhede
    http://forums.asp.net/t/1884400.aspx/1

    Todo lo que tenía que hacer era agregar

    <meta http-equiv="X-UA-Compatible" content="IE=7" />

    a mi página principal.

    Yo no prueba esto, y yo no, ya que es fijo y no quiero estropear nada, pero si he tenido que solucionarlo hoy, me gustaría dar a este un tiro. Gracias Alex.
    probado, no funciona para mí 🙁
    Esto funcionó para mí!!!
    Esto es realmente una mala solución como es posible que no funciona en IE 11, sería mucho mejor para arreglar el problema real cuando se ejecuta en modo estándar.
    sí, la mejor opción para solucionar el problema real, si tienes tiempo y no es una solución. He encontrado esto horas antes de la implementación y de mi gestión no quería posponer la implementación, y yo no podía encontrar una solución para mi problema. Esto es sólo una alternativa de solución rápida.

    OriginalEl autor Alex Z

  5. 0

    Me figura la opción. He modificado la MicrosoftAjax.js y MicrosoftAjax.debug.js archivo para redondear el valor del punto antes de regresar Sys.UI.Point para todas las áreas – ver a continuación.

        if (typeof param1 === "number")
        {
            param1 = Math.round(param1);
        }
    
        if (typeof param2 === "number")
        {
            param2 = Math.round(param2);
        }
    
        return new Sys.UI.Point(param1, param2);

    Tengo hace referencia modificado archivo js usando la opción de secuencia de Comandos en el ScriptManager código de la página ASPX. Eso es lo que se hace.

    Espero que ayude a otros.

    OriginalEl autor Hemendra Shah

  6. 0

    si el uso de internet explorer, a continuación,
    pulse ALT
    seleccione Herramientas —–> la Vista de Compatibilidad ——-> a continuación, agregue su sitio web se muestre en la Compatibilidad.
    espero que te ayude.

    OriginalEl autor Vijay B Kale

Dejar respuesta

Please enter your comment!
Please enter your name here