gpt4 book ai didi

javascript - 如何使用 Javascript 以特定延迟更新同一浏览器页面的新 URL?

转载 作者:行者123 更新时间:2023-11-28 02:07:08 26 4
gpt4 key购买 nike

我想在同一个浏览器窗口中依次打开 10 个网页,并有一定的延迟。

例如我想要

  1. 打开“www.Anywebsite.com”
  2. 延迟5秒
  3. 在同一页面中打开一个新的“www.Anywebsite.com”

我正在尝试做这样的事情

<!DOCTYPE html>
<html>
<body>

<script>
var myVar=setInterval(function(){myTimer()},1000);
var condOpen = 0;
function myTimer()

{
if (condOpen == 0)
{
window.open("http://www.tut.fi","_self");
condOpen = condOpen + 1;
}
else if(condOpen == 1)
{
window.open("www.w3schools.com","_self");
}
}
</script>

</body>
</html>

问题是它只打开第一页,并且当我读到“setInterval”时,它必须在一段延迟后执行指定的函数。请帮助我,我之前没有 JavaScript 经验,但这对于我正在执行的特定任务来说是必需的。

最佳答案

您的代码失败,因为当您使用 _self 参数调用 window.open() 时,就像执行 window.location = "http:///www.example.com/";.这会将您的页面替换为您正在加载的新页面。页面上的所有 JavaScript 都会被终止,包括任何计时器。

您可以执行与此处尝试执行的操作类似的操作,但您需要在 window.open() 调用中使用不同的目标窗口名称。您可以在这里随意起一个名字;只是名称不要以 _ 开头,以避免使用 _self 等特殊名称。

不幸的是,如果您这样做,您将遇到弹出窗口拦截器。为了绕过弹出窗口拦截器,您需要做的是让第一个 window.open() 由用户操作直接触发,例如通过单击按钮。之后,您可以使用计时器在您打开的窗口中更改 URL。

此外,当您想要向列表中添加更多 URL 时,您会厌倦编写 if 语句。您可以使用 URL 数组来简化代码。

最后,缩进 JavaScript 代码以显示其结构将是一个非常的好主意。将其全部放在左边距中会导致难以理解。

将它们放在一起:

<!DOCTYPE html>

<html>
<head>
<title>Window Loop Test</title>
</head>

<body>

<button onclick="start()">Start</button>

<script>
var targets = [
'http://www.stackoverflow.com/',
'https://developer.mozilla.org/en-US/',
'http://www.w3fools.com/'
];

var iTarget;

function nextTarget(){
window.open( targets[iTarget], 'target' );
if( ++iTarget >= targets.length ) {
iTarget = 0;
}
}

function start() {
iTarget = 0;
nextTarget();
setInterval( nextTarget, 5000 );
}
</script>


</body>
</html>

here is a fiddle进行测试。

关于javascript - 如何使用 Javascript 以特定延迟更新同一浏览器页面的新 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17611204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com