2012-01-26 9 views
6

Me encuentro con un límite estricto en Internet Explorer con protocolos de aplicación que superan los 508 caracteres de longitud. Este límite no se aplica en otros navegadores, Chrome etc.¿Cuál es la longitud máxima de un protocolo url personalizado que utiliza protocolos sincronizables enchufables en Internet Explorer?

La documentación en MSDN (1) no parece mencionar la longitud máxima permitida en la parte específica del esquema del URI o la longitud total, incluido el esquema.

508 caracteres está muy por debajo de los límites generales para URL en IE informados para ser 2083 caracteres (2).

¿Alguien sabe si esto es el comportamiento esperado, estoy usando IE8, o tal vez tengo algo mal aquí?

Referencias:

Respuesta

3
508 + some bookkeeping = 512 bytes 

creo que el navegador, después de disociación del protocolo, lo almacena en una memoria intermedia temporal de una tamaño fijo. Por qué, no sé, y esto parece un comportamiento que podría cambiar en el futuro. No confíe en eso.

También me pregunto por qué necesitarías un protocolo tan largo. Incluso un GUID tiene solo 36 caracteres cuando se expresa como dígitos hexadecimales más guiones.

4

Recientemente me encontré con este mismo problema y se me ocurrió la siguiente solución. Si intenta asignar la dirección URL directamente como esto:

document.location.href = theUrlWithTheCustomProtocol; 

que se ejecutará en este error límite de 508 caracteres y en IE8 obtendrá un error de JavaScript diciendo algo sobre el "área de datos transferida a una llamada de sistema es demasiado pequeña."

Para solucionar este problema, he pasado del código anterior para el uso de jQuery para crear un iframe oculto de esta manera:

// Remove old frame 
$('#hiddenIFrame').remove(); 

// Add new one 
$('<iframe />', { 
    'id': 'hiddenIFrame', 
    'name': 'hiddenIFrame', 
    'src': theUrlWithTheCustomProtocol, 
    'style': 'display: none;' 
}).appendTo("body"); 

Esto se pone alrededor del límite de caracteres IE 508 usando document.location.href y esto la solución funciona para IE, Firefox, Chrome y Safari.

+0

En mis pruebas, esto aumenta el límite a 2,046 caracteres en IE 9-11. (Curiosamente, tiene 2.047 caracteres en IE 8.) Es solo un aumento de 4 veces, pero puede ser suficiente en algunas situaciones. Gran hallazgo –

Cuestiones relacionadas