2013-08-15 5 views
1

Я пытаюсь создать базовый сценарий в Tampermonkey. Я хотел бы посетить один URL, подождите 1 секунду, а затем посетить другой:Простой setTimeout не работает?

$(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.

ответ

9

Условия выполнения JavaScript выполняются только на протяжении всей жизни страницы.

Когда вы установили location.href, вы покидаете страницу, поэтому любой ожидающий JavaScript не будет запущен, потому что его окружение больше не существует.

+0

Имеет смысл, спасибо – user1063998

1

Вы можете использовать плавающие фреймы для достижения своей цели Это будет делать то, что вы ищете:

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

Затем измените document.location.href на document.getElementById('myframe').src = 'URL HERE';

Таким образом, пользователь никогда не будет технически оставить свой экран, и вы можете изменить страницу, которую они просматривают.

+0

Безопасность песочницы может помешать – bobbybee