Abra una lista de URL cada una con un retraso de 20-30

0

Tengo el siguiente script de una publicación de Dennis de esta URL

Es exactamente lo que estoy buscando, pero necesito poder abrir cada url con 20 o 30 segundos de diferencia.

<script>
function openWindow(){
    var x = document.getElementById('a').value.split('\n');
    for (var i = 0; i < x.length; i++)
        if (x[i].indexOf('.') > 0)
            if (x[i].indexOf('://') < 0)
                window.open('http://'+x[i]);
            else
                window.open(x[i]);
}
</script>

¿Alguien puede ayudar?

Louwrens Kokke
fuente
¿De qué usuario es la publicación 2?
Rik

Respuestas:

0

Para evitar congelar todo el navegador (con una función de retraso), puede usar setTimeOutpara ejecutar una función a 20000 milisegundos de diferencia.

Todos setTimeoutse ejecutan uno tras otro. Hay una función programada en cada milisegundo de tiempo. Cada ciclo, el parámetro atTime aumenta en 20000 (20 segundos). Después de eso, su página permanece inactiva y las funciones setTimeout se ejecutan en los momentos asignados.

Tenga en cuenta el setTimeout("window.open('" + site + "')", atTime);. No podemos hacerlo setTimeout(window.open(site), atTime);porque la función entre setTimeout se evalúa en el momento de la ejecución y la variable sitetendrá el último valor del bucle. Entonces hacemos un cambio setTimeout("window.open('xxx')", atTime);donde xxx cambia en el ciclo. De esta manera, la variable se establece en el comando de ejecución. (Espero que sea lo suficientemente claro)

Aquí está el guión:

<script>
function openWindow(){
    var x = document.getElementById('a').value.split('\n');
    atTime = 0;
    for (var i = 0; i < x.length; i++) {
      if (x[i].indexOf('.') > 0) {
        site = x[i];
        if (x[i].indexOf('://') < 0) { site = 'http://' + x[i]; }
        setTimeout("window.open('" + site + "')", atTime);
        atTime += 20000;
      }
    }
}
</script>
Rik
fuente
fue el guion de Dennis. > Si pego varias URL en el cuadro de la secuencia de comandos que necesito, por ejemplo. abra www.google.com espere 20 segundos abra www.bing.com espere 20 segundos abra www.yahoo.com y así sucesivamente a través de la lista que se ha pegado. Espero que tenga sentido ya que mi inglés no es muy bueno y esto es Mi primera vez con HTML. Gracias
Louwrens Kokke
Entonces puedes usar la sleepfunción en mi segundo código en mi respuesta.
Rik
Gracias Rik, lo intentaré. Esta es mi primera edición de HTML, deséenme suerte. :)
Louwrens Kokke el
No funciona como esperaba, ya que una ventana blanca en blanco se abre cada 20 segundos con "Firefox no responde" y no es sino hasta 20 segundos después de que se abre la última ventana congelada que de repente obtengo todas las páginas congeladas para cargar todas las URL a la vez. :( Si tiene alguna idea, volveré mañana para responder. Gracias
Louwrens Kokke
Sí, ya dije que no se recomendaba la función de retraso. Cambié mi respuesta a una función donde no hay congelación del navegador.
Rik