Ignorar los errores de syntax de JavaScript en una página y continuar ejecutando el script

Desarrollo complementos para WordPress. Utiliza algunos jquery en el lado del usuario (temas) como un complemento jquery. El problema es que cuando hay un error de JavaScript con otros complementos hechos por otros autors, el javascript de mi complemento no se ejecuta.

Y lo peor es que la gente considera que hay un error grave con mi complemento a pesar de que funciona 100% bien con el manejo de errores de instrucciones condicionales. Pero en realidad se debe a algunos otros errores de syntax de JavaScript de otros autores de WP plugin / theme.

¿Hay alguna manera de continuar ejecutando mi plugin JS ignorando otros errores de JS? ¿O puedo tener sugerencias para manejar este problema?

enter image description here

Tratar :

 window.onerror = function(){ return true; } 

Eso es si puede incluir esto antes de que se haya ejecutado el script con errores.

Debería corregir el antiguo error de JavaScript porque puede crear muchos problemas, no ahora sino para la próxima vez.

Coloque su código / archivo JavaScript en la parte superior (antes de que JS tenga un error) y llámelo antes de que JavaScript sea afectado por otro código JavaScript.

En caso de que necesite manejar la excepción de JavaScript en tiempo de ejecución, la mejor opción es

 try { /* run js code */ } catch (error){ /* resolve the issue or bug */ } 

Debería poder tragar cualquier error usando el evento de error :

 $(window).error(function(e){ e.preventDefault(); }); 

Nunca lo intenté, pero debería funcionar en teoría.

Debe tenerse en cuenta que probablemente esta no sea una gran solución para su problema. Podría ser que su complemento esté interfiriendo con otros complementos. Por supuesto, es posible que los errores no sean culpa suya, pero en general (con complementos lanzados públicamente) no es el caso.

Encontré el mismo problema: hay muchos plugins que hacen demasiadas suposiciones y causan errores de JavaScript en TU página, incluso cuando eres un buen ciudadano; estos errores no tienen nada que ver con tu complemento.

No tiene sentido tratar de manejar errores en otros complementos: IMO es mejor ser autónomo pero resistente a sus errores.

En mi caso, los errores estaban deteniendo el evento listo de jquery DOM, y mi código de inicio de JavaScript no se estaba ejecutando. Sin embargo, la forma exacta del error no es importante: la solución es solo disparar en múltiples eventos.

La solución para mí fue tener inconvenientes además de confiar en el evento jQuery DOM listo:

  1. Envolví cualquier código que quisiera activar en el evento listo para DOM en su propia función, por ejemplo, my_hardened_init_action ();
  2. Agregué una función, my_hardened_init (), que solo se ejecuta una vez. Llama a my_hardened_init_action () la primera vez que se llama y no hace nada en llamadas posteriores.
  3. Agregué varios métodos para llamar a my_hardened_init () en el pie de página de WordPress. En mi caso, solo necesitaba dos. En primer lugar, probando el habitual jQuery DOM init, pero volviendo a un simple setTimeout (). Por lo tanto, si el jQuery DOM init nunca se activa debido a un JavaScript quebrado, el tiempo de espera se disparará poco después de que la página haya terminado de cargarse.

Podría agregar muchos otros inconvenientes, incluso agregar el código al encabezado si fuera necesario. Como my_hardened_init () solo se ejecuta una vez, puedes intentar tantas veces como desees activarlo.

Esto ha funcionado en un montón de sitios de clientes con una variedad de otros complementos rotos.

Espero que esto ayude.

Si su página se está ejecutando. Utilizar:

$(window).error(function(e){ e.preventDefault(); }); // IGNORE ALL ERROR JQUERY!

o usar:

window.onerror = function(){ return true; } // IGNORE ALL ERROR JAVASCRIPT!

  

Las declaraciones de captura de prueba regulares no funcionarán para este tipo de errores.

Posibles soluciones:

Usa inline-css para hacer flotar la barra a la izquierda en lugar de jQuery (no estoy seguro de cuál es la función completa de tu complemento, pero si solo flota la barra hacia la izquierda, ¿por qué no usar css?)

Tener un iframe invisible que intente ejecutar algún código en la página principal. si falla, entonces alerta al usuario (desde dentro de este iframe) que no fue tu culpa 🙂

Quizás podría intentar poner su js en un objeto html, para que se ejecute en una página separada. Eso probablemente no ayude mucho si el js en la página principal no se ejecuta para interactuar con el objeto. Solo algo con lo que jugar.

Pon tu llamada al plugin en

 try{ ...... } catch(e){ } 

Esto me funciona:

 try{ //your code } catch(error) { return true; } 
    Intereting Posts