为什么 set.timeout 在这个 php while 循环中不起作用?

Why is set.timeout not working in this php while loop?

我对javascript不是很熟悉。我想在这个 while 循环中用超时打开每个 link。没有超时它正在工作。

<?php
$zaehler = 23423423; // id aus dem forular
$anzahl = 5; // popups aus dem forumlar
$max = $zaehler + $anzahl; //  = maximale anzahl 

$increment = 1; // zählt die tradeid um 1 hoch

$i = 0;

while($zaehler < $max) {
    $i++;
    echo $i . " | ";
    $link = $zaehler += $increment;
    echo "https://mywebsite/" . $link;



    echo"<form action='https://mywebsite/$link' method='post' target='_blank'> <input type='submit'> </form>"; //irrelevant, da popups schon geöffnet werden

    echo "<script type=\"text/javascript\"> 
        window.open('https://mywebsite/$link', '_blank', setTimeout(1000), )
    </script>";

    echo "<hr>";



    if($link == $max) {
      echo "<hr><br>Stop";
      break; //bricht die schleife ab, wenn maximale vorgegebene anzahl an popups erreicht ist
   }
}
?>

如果你仔细阅读window.open,例如here,你会发现它的第三个参数与setTimeout无关。

通过 settimeout 打开 window 的正确代码是:

window.setTimeout(
    // what to do:
    function() { window.open('https://mywebsite/url', 'WINDOW_NAME')  },
    // in what amount of time:
    1000
);

您不能真正按照您的建议使用setTimeout()功能...

我想这大概就是您要查找的内容:

echo <<< EOT
<script type="text/javascript"> 
    setTimeout(function() {
        window.open('https://mywebsite/$link', '_blank');
    }, 1000);
</script>
EOT;

注意:我只使用 nowdoc 符号,因为它更容易阅读。当然,也可以为 echo 命令使用普通的文字字符串。