我想在同一个浏览器窗口中依次打开 10 个网页,并有一定的延迟。
例如我想要
- 打开“www.Anywebsite.com”
- 延迟5秒
- 在同一页面中打开一个新的“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/