En una página, algo así como jsFiddle, que ejecuta el Javascript invocado por el usuario, ¿hay alguna manera de detener/interrumpir los scripts "problemáticos" que se ejecutan en un iframe?Al ejecutar el Javascript de usuario invocado, ¿hay alguna manera de detectar y detener los scripts "problemáticos"?
La clase principal de scripts de problemas serían bucles infinitos, creo. Los navegadores manejan bastante bien varias alertas, pero una secuencia de comandos como, for (var i = 0; ++i; i < 100) { /* do stuff */ }
será para siempre.
¿Cómo puedo detectar y no ejecutar, o ejecutar y detener, digamos después de 10 segundos de ejecución, un script?
Eliminar el iframe está bien, pero solo quiero eliminarlo si el script se sigue ejecutando después de 10 segundos, pero no quiero eliminarlo si el script ha dejado de ejecutarse.
Así es como me imagino que la página va a funcionar. Si usted tiene una mejor solución, que me haga saber ...
La página de entrada contiene un textarea
y un espacio en blanco iframe
. El usuario ingresa su script en el textarea
, y cuando está listo, hace clic en run
. Luego (backstage) se crea una página separada que contiene el script del usuario en forma ejecutable en una página HTML. El src
del iframe
se establece en la página con el código ejecutable. Todo esto sucede dinámicamente sin una actualización de página.
Borraste la otra pregunta antes de que tuviera oportunidad de responder, pero recuerda que ejecutar 'eval' significa que el código que tu usuario ingresa puede interactuar con los códigos que escribas, lo que significa que puede modificar variables, ejecutar funciones, etc. etc. Esta es la razón por la que desea que los sitios de la solución 'iframe' como jsfiddle usen para aislar el código. –
@Yi Jiang, ¿Quizás pueda eliminar el 'iframe' después de, digamos, cinco segundos, para finalizar el script? – strager
@Yi Jiang - Gracias por la sugerencia. ¿De modo que de alguna forma el src del iframe es la evaluación del script de usuario? –