简单的setTimeout无法正常工作?

时间:2013-08-15 18:10:41

标签: javascript tampermonkey

我正在尝试在Tampermonkey中创建一个基本脚本。我想访问一个URL,等待1秒然后访问另一个URL:

$(document).ready(function() {
    document.location.href = 'http://www.google.com';
    setTimeout(doStuff ,1000);
});

function doStuff(){
    document.location.href = 'http://www.stackoverflow.com';
}

似乎永远不会调用函数doStuff。每当我运行脚本时,我都会被重定向到google.com,但不会被重定向到stackoverflow.com。

2 个答案:

答案 0 :(得分:9)

JavaScript执行环境仅持续页面的生命周期。

当您设置location.href时,您离开了页面,因此任何待处理的JavaScript都不会运行,因为它的环境不再存在。

答案 1 :(得分:1)

您可以使用iframe来实现目标这将满足您的需求:

<body>
  <iframe style='width: 100%; height: 100%;' id='myframe' />
</body>

然后将您的document.location.href更改为document.getElementById('myframe').src = 'URL HERE';

这样,用户绝不会在技术上离开您的屏幕,您可以更改他们正在查看的页面。