Pregunta

Google chrome no se comportan de la misma como en otros navegadores cuando se enfrentan a esta pepita:

<?php
while (true) {
    echo "<script type='text/javascript'>\n";
    echo "alert('hello');\n";
    echo "</script>";
    flush();

    sleep(5);
}
?>

Parece que la espera para la conexión a terminar antes de hacer nada.

Otro de sondeo ¿cómo puedo hacer una cosa similar en Google Chrome?

¿Fue útil?

Solución

Algunos navegadores requieren que se descargue un cierto número de bytes antes de mostrar los datos disponibles. Recuerdo que la última vez que intenté hacer lo que estás haciendo, terminé volcando algo así como 300 espacios para asegurarme de que el navegador se molestaría con eso.

Otros consejos

Tuve un problema similar a esto y lo resolví agregando una etiqueta HTML (en mi caso < br / >) antes de cada descarga.

Supongo que Chrome esperará a que se cierre un elemento que se está mostrando antes de activar una nueva representación. Sin embargo, eso es solo una suposición.

No parecía requerir 1024 bytes, creo que habría tenido poco menos de 512 bytes cuando funcionó.

Me gustaría tener acceso a Chrome en el momento de poner a prueba algunas ideas.Has probado a añadir algo de HTML después de </script> y a ver si se hace de manera incremental?Me imagino que lo haría, y si lo que sería la prueba de que Chrome no desea ejecutar javascript en <script> los elementos, mientras que la página se está cargando.Por supuesto, de representación de la marca podría desencadenar la ejecución de los scripts.Si no, usted podría intentar incluyendo javascript y archivos externos y ver si eso afecta el tiempo de ejecución.

Creo que los navegadores generalmente tienen un margen de maniobra de acuerdo a la especificación en la hora de comenzar la ejecución de javascript, especialmente cuando se carga la página.Podría no ser posible hacerlo en un lugar completamente cross-browser sin necesidad de votación.

¿Hablaste con los desarrolladores de Chrome? ¿Abrió un error al respecto? En mi humilde opinión, la mejor solución es hacer que Chrome se comporte como lo hacen otros navegadores, en lugar de tener una solución alternativa.

Bien, en realidad probablemente necesitarás una solución a corto plazo. Pero imagine un mundo en el que cada navegador se comporta de manera diferente en cada aspecto, digamos HTTP, HTML, manejo de CSS ... ¡no sería un lugar agradable!

Stream está funcionando. La respuesta de la falta de párpados es la solución.

print " 2048 puntos [BR > \ n " ;;

El [= <

Por cierto mira el agente de usuario. Safari también necesita muchos bytes. Creo que 1024. Firefox no necesita tantos bytes.

<?php
$i = 0;
while (true) {
    if($i == 0) {
        echo "<html><body>";
    }
    echo "<script type='text/javascript'>\n";
        echo "alert('hello');\n";
    echo "</script>";
    if($i == 0 ) {
        $padstr = str_pad("",2048,"&nbsp;");
        echo $padstr;
        echo "</body></html>";
    }
    flush();

    sleep(5);
    $i = $i + 1;
}
?>

Por primera vez, envíe al menos 2048 bytes de datos. entonces funcionará bien. Y asegúrese de mantener la etiqueta de script en una etiqueta de cuerpo. Lo extraño es que, en mi caso, si agrego 1024 bytes, funcionó. Espero que esto te ayude

El programa anterior funciona bien en Google Chrome.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top