2016-10-06 9 views
0

JavaScriptの新機能です。 3秒ごとに特定のWebページ(またはこの場合はビデオ)を20ページ開いてボタンをクリックさせたいと思います。 window.open()(効果的に私のブラウザをクラッシュさせる)をループしたり、別のループのためにウェブページをまったく読み込まないようにしたり、すべてのタブを引き起こしたりすることなく、一度に開く。ここで私はJSのために、これまで持っているものです。JavaScriptであらかじめ設定した間隔で特定の数のWebページを開く方法は?

var numberOfVids = 20; 
var vidNumber = 1; 
var website = "http://example.com"; 
var myVar; 

function executeVidBot() { 
    myVar = setInterval(openVid, 3000); 
} 

function openVid() { 
    window.open(website); 
    vidNumber++; 
} 

そして、ここでは私のHTMLです:

<!DOCTYPE html> 
<html> 
<body> 

<p>Click the button to execute the VidBot.</p> 

<button onclick="executeVidBot()">Execute VidBot</button> 

<script src="vidbot.js"></script> 

</body> 
</html> 

私はしばらくの間、解決策を探しているとすることはできませんされてきたようにすべてのヘルプは非常にいただければ幸いです1つを見つけるようです。

function openVid() { 
    window.open(website); 
    vidNumber++; 
    if (vidNumber == numberOfVids) { 
     clearInterval(myVar); 
    } 
} 

最初の関数呼び出しを:のsetIntervalを使用して

+1

質問を明確にするために、ユーザーがボタンをクリックしたときに20個のポップアップを起動したいのですか? –

答えて

0

は、一定の間隔でコードを実行するのが正しい方法です、それはあなたのopenVid()関数の中で限界に達したとき、しかし、あなたは手動で間隔を停止する必要があります。しかし、3秒間は実行されません。すぐに実行するには、手動で呼び出すことができます。

function executeVidBot() { 
    openVid(); // Execute now 
    myVar = setInterval(openVid, 3000); // Execute in 3 seconds 
} 

あなたは一度だけ実行する代わりに、setTimeoutを使用する必要がありますforループを使用したい場合:

for (var i = 0; i < numberOfVids; i++) { 
    setTimeout(openVid, 3000 * i); 
} 

ほとんどのブラウザが原因乱用の可能性への複数のwindow.openの呼び出しをブロックします。たとえば、Chromeはそれらをブロックし、「このページから次のポップアップがブロックされました」というメッセージを表示します。ユーザーに迷惑をかける可能性のあることをしようとしている場合は、そうしないことをお勧めします。

ページを20回開かなければならないテスト作業のような何かをしているのなら、PhantomJsのようなヘッドレスブラウザを使用してページをロードしてボタンを20回クリックする方が良いかもしれません。ページを直接20回ロードするだけです。

+0

ありがとうございます。それは非常に役に立ちます。 –

関連する問題