theme plantillas plantilla para elegantthemes divi javascript html internet-explorer internet-explorer-9 internet-explorer-10

javascript - plantillas - elegantthemes wordpress



IE 9 e IE 10 no pueden ingresar texto en cuadros de texto de entrada de vez en cuando (11)

Hay una página web con un iframe adentro. A veces, los controles del cuadro de texto de entrada, dentro del iframe, están bloqueados / congelados. Los usuarios no pueden ingresar texto en ellos. Pero el cuadro de texto puede enfocarse y no desvanecerse. No hay código para desactivar los controles de entrada y esto no siempre sucede. Hasta ahora, esto solo ocurre en IE 9 e IE 10. Firefox y Chrome están bien.

Una breve descripción de cómo funciona la página es:

  • Hay un botón en la página principal. Al hacer clic en él se construirá un iframe desde cero y se lo mostrará. Esto es hecho por Javascript.

  • Nuevamente, hay un botón en el iframe para cerrarlo. Al hacer clic en él
    eliminará el iframe del DOM de la página principal.

Por favor, hágamelo saber si desea más información según sea necesario. Gracias por adelantado.


¡Aquí está la solución que funcionó para mí, habiendo probado todos los demás en esta página! Requiere jQuery pero estoy seguro de que podría reescribirse en JavaScript nativo si fuera necesario.

Como con muchas de las otras soluciones, esto se debe agregar a la fuente del iframe, suponiendo que tiene acceso para modificarlo:

$("body").focusout( function () { window.focus(); });


Este error es muy molesto, incluso peor, había muy pocas informaciones que pudimos encontrar en google.

Solo hay un enlace de Microsoft sobre IE9, pero el problema todavía existe en IE10 / IE11 y es mucho más fácil de reproducir.

Acabo de crear un violín para describir este problema

http://jsfiddle.net/WilliamLeung/T3JP9/1/

¿Por qué es tan difícil para M $ solucionar este problema durante años?

debe haber tres soluciones

  1. Restablece el foco cada vez que modificamos el DOM con iframe
  2. o programe una tarea que consuma mucho tiempo "sin hacer nada", que puede hacer que la respuesta de IE al evento del mouse sea mágica, no podría decirle por qué, tal vez M $ podría

    Los códigos de muestra que configuran una tarea que consume tiempo

    setInterval(function () { var loopCount = 10000; var x = 0; for (var i = 0; i < loopCount; i++) { x = (x + Math.random() * 1000) >>> 0; } return x; }, 1000);

  3. o restablecer el contenido DOM antes de eliminarlo del documento

    someDivWithIframe.innerHTML = ""; $(someDivWithIframe).remove();

    No estoy seguro de si ayuda en todos los casos, debe haber probado


Esto funcionó para mí en IE11,

  • Causa del problema (aparte de que IE sea estúpido):
    • El elemento de entrada enfocado se elimina de la pantalla dentro de un iframe (propiedad de visualización css)
  • Problema:
    • No se puede hacer clic en el elemento de entrada de texto, de todos modos puede tabularlo
  • Solución:
    • Necesitamos enfocar () un elemento visible conocido antes de sacar un campo de entrada de la pantalla, por lo que en la línea antes de quitar la pantalla de un campo de entrada, tenemos la línea: document.body.focus();

La solución con jQuery funcionó en IE11 para mí, no en las otras soluciones.

$(theIframeElement).empty().remove();

Otra solución que funcionaba en IE9 / 10 era configurar el iframe src para que se vaciara antes de eliminarlo

iframe.src=""

Pero esto causa una excepción "Acceso denegado" en IE11 si está utilizando una versión anterior de jQuery <1.11.1

Algunos enlaces: para obtener información, jQuery también corrigió este problema por su complemento Dialog.js que mostraba contenido en un iframe: http://bugs.jqueryui.com/ticket/9122

Corrección de errores de jQuery al error "acceso denegado" de IE11: http://bugs.jquery.com/ticket/14535


Logré solucionar este error volviendo a enfocar la página principal. Lo que he hecho hasta ahora es: poner un cuadro de texto de entrada HTML, que se establece como invisible, en la página principal. Cuando el iframe se cierra, vuelvo a enfocar ese cuadro de texto.

Consulte los siguientes enlaces para obtener más información sobre este error de IE.

link1

link2


Ninguna de las soluciones funcionó para mí en IE 11.

Lo resolvió agregando este código dentro de iframe:

$("input").first().focus().blur();

Obviamente, esto no funcionará si no tienes control sobre tu iframe.



Solo para agregar a lo que otros dijeron, en realidad es un problema cuando alguna entrada en un iframe tiene foco, que luego se cierra, haciendo que todas las otras entradas pierdan el foco. Y, de hecho, tener un script para establecer el foco en un elemento resuelve el problema. Pero para mí esto no funcionaba porque algunas de mis entradas estaban deshabilitadas. Entonces la solución que funcionó para mí está debajo

$("input[type=text]:not([disabled])").first().focus();

Fragmento completo ya que estaba usando el modo de arranque y el modal tenía un iframe. Establecí el foco en un campo editable antes de abrir un modelo y luego del cierre:

var modalInstance = $uibModal.open({ // modal properties }); modalInstance.closed.then(function () { $("input[type=text]:not([disabled])").first().focus(); }); modalInstance.opened.then(function () { $("input[type=text]:not([disabled])").first().focus(); });


Solución simple con Javascript que funciona para mí y no vi efectos secundarios en otros navegadores:

<script> var pswElement = document.getElementById("password"); pswElement.addEventListener("focus", myFocusFunction, true); function myFocusFunction() { document.getElementById("password").select(); } </script>

De todos modos, es bastante triste que MS no pueda solucionar ese problema en una versión superior también.


Tuve el mismo problema con IE11, angularjs y el uso de un IFrame. Mi plantilla usa ng-switch para cambiar los modos de vista. Uno de los modos de vista contiene un IFrame. En el momento en que abandono el modo de vista que contiene el IFrame:

var iFrame = <HTMLIFrameElement>document.getElementById("myIFrame"); iFrame.focus(); this.mode = ViewModes.ModeWithoutIFrame;

Resolvió el problema para mí.


Yo también estaba sufriendo de este problema. Como ha señalado William Leung, IE tiene un error al eliminar el objeto Iframe de DOM.

Pruebe lo siguiente:

$(someDivWithIframe).empty().remove();