He estado trabajando en un experimento para representar HTML en una imagen de lienzo, haciendo que javascript lea toda la información necesaria del DOM cargado. Como el lienzo carece de muchas de las partes estándar de CSS, especialmente en lo que se refiere al formato de texto, es necesario realizar muchos rodeos y procesos de rendimiento intensivo (letter-spacing
para uno). La intención es y nunca será hacer un renderizador HTML a prueba de tontos, ya que simplemente no será posible, pero en su lugar intente hacerlo lo más preciso posible.Problemas de rendimiento con HTML to canvas, ¿dónde comenzar?
Para las páginas de muestra, Google Chrome generalmente las carga significativamente más rápido que FF. Sin embargo, para algunas páginas (generalmente las más grandes), Chrome se congela por completo, mientras que Firefox las carga bien. Ahora, he estado tratando de precisar dónde van exactamente las cosas, pero no han tenido mucha suerte, ya que no da como resultado algo en Chrome.
¿Tiene Chrome algún límite de cuántos sorteos de lienzo se pueden realizar dentro de un cierto lapso de tiempo, o cuántos recursos del sistema puede utilizar una página? ¿Cómo puedo comenzar a desentrañar el cuello de botella si no puedo obtener ningún tipo de comentario de la página (ya que simplemente cuelga)?
Ejemplos (lo que debería hacer, es renderizar una imagen de lienzo en la parte superior de la página, que debe parecer más o menos igual a la página HTML real. Puede alternar la imagen de lienzo (mostrar/ocultar) haciendo clic en ella. por favor, no abrirlos o bien si tienes trabajo no guardado en sus navegadores, ya que puede llegar a colgarlos también):.
simple test, works fine in FF/Chrome
another simple test, works fine in FF/Chrome
Complete page, works fine in FF/Chrome
Complete page, only works in FF < 4, Chrome freezes
Todos usan el mismo js que se puede encontrar here.
No estoy buscando una secuencia de comandos extremadamente rápida, ya que con el tipo de emulación que representa las imágenes, no creo que se pueda siquiera hacer. Simplemente tratando de encontrar formas de hacerlo quizás un poco más eficiente, sin perder ninguna de sus funcionalidades actuales.
Hola - Verificaría que el código no esté causando un bucle infinte o algo así como http://hertzen.com/experiments/html2canvas/tests/palmtrees/ también bloquea FF4. – Kinlan
El último ejemplo bloquea mi FF4 (4.0.1), la primera alerta de script que no responde, luego tengo que matar el proceso y reiniciar. Y la página intenta cargar en Chrome, pero nunca lo hace. Todavía puedo seguir usando Chrome, sin embargo. FF, no (como yo diría). –
Así que supongo que no es un problema con Chrome solo entonces. Si fuera un bucle infinito, presumiblemente también fallaría versiones anteriores de FF. – Niklas