2017-09-27 7 views
0

私は、自動的に自動クリックするように設定したいリンクが7つあるウェブページを持っています。これをオン/オフに切り替えるボタンを設定したいと思います。オンにすると、ウェブページはクリックアクションを実行し、オフにすると、ウェブページは正常に動作します。この目的は、表示目的(さまざまな指標などの表示)でこの機能を使用することです。表示のためにウェブページ上のリンクをオートチック

私がしたsetIntervalを使って説明し、このリンクが見つかりました:Calling a function every 60 seconds

そしてプログラムでリンクをクリックすると説明し、この1:How do I programmatically click a link with javascript? を、しかし組み合わせたこれらの2つの方法のいずれかの例を見つけることができませんでした。

しようとしました:

onclick="click_links();" 

しかし、これまでのところ、でもクリックイベントをトリガすることはできません。

function click_links(){ 
    $("safety").trigger("click"); 
} 

window.setInterval(function(){ 

     click_links(); 
}, 2000); 

とと呼ばれます。

ATTEMPT 2: 私はこれと密接だ:

function links() { 
safety 
daily 
monday 
tuesday 
} 

var intervalId; 
function toggleIntervalb() { 

    if (!intervalId) { 
    intervalId = setTimeout(links, 5000); 
    } else { 
    clearInterval(intervalId); 
    intervalId = null; 
    } 
} 

function safety(){ 
document.getElementById("fires").style.display = 'none'; 
document.getElementById("safety").style.display = 'block'; 
document.getElementById("daily").style.display = 'none'; 
document.getElementById("monday").style.display = 'none'; 
document.getElementById("tuesday").style.display = 'none'; 

} 
function daily(){ 
document.getElementById("fires").style.display = 'none'; 
document.getElementById("safety").style.display = 'none'; 
document.getElementById("daily").style.display = 'block'; 
document.getElementById("monday").style.display = 'none'; 
document.getElementById("tuesday").style.display = 'none'; 

} 
function monday(){ 
document.getElementById("fires").style.display = 'none'; 
document.getElementById("safety").style.display = 'none'; 
document.getElementById("daily").style.display = 'none'; 
document.getElementById("monday").style.display = 'block'; 
document.getElementById("tuesday").style.display = 'none'; 

function tuesday(){ 
document.getElementById("fires").style.display = 'none'; 
document.getElementById("safety").style.display = 'none'; 
document.getElementById("daily").style.display = 'none'; 
document.getElementById("monday").style.display = 'none'; 
document.getElementById("tuesday").style.display = 'block'; 

しかし、5秒後に、それが唯一のちょうどセット(火曜日)に最後の関数を実行し、遅延とそれらを反復処理しません。それぞれの間に。

+1

これは可能ですが、私はあなたがそれを自分で試してみて、このコミュニティから最良の応答を取得するための、いくつかの試みで戻ってくることをお勧め。 – rjustin

+1

'setInterval()'とjquery 'trigger()' – rjustin

+0

を基本的な試行で更新しました。 – user3108489

答えて

0

How do I programmatically click a link with javascript?の回答はもはや正確ではありません。この頃にスクリプトでクリックイベントだけイベント、they do not cause the browser to actually follow the links火災:

注:手動でイベントを発射すると、そのイベントに関連付けられたデフォルトのアクションを生成しません。たとえば、キーイベントを手動で起動しても、その文字がフォーカスされたテキスト入力に表示されることはありません。 UIイベントの場合、セキュリティ上の理由から、スクリプト自体がブラウザとやりとりするユーザーアクションをシミュレートできないため、これは重要です。

資料には、キーボードイベントのためであるが、ここで示されたのと同じで、イベントをクリックして適用されます。

$('#foo').on("click", function() { 
 
console.log("Click event fired"); 
 
}); 
 

 
$('#test').on("click",function() { 
 
    $('#foo').trigger('click'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    This will work: <a id="foo" href="https://example.com">Example link</a><br> 
 

 
    This will fire the event but not follow the link: <button id="test">Trigger "click" event on link</button>

を代わりに、各リンクのhrefを読んで、リダイレクトする必要があり、 :

$('#test').on("click",function() { 
 
    var url = $('#foo').attr("href"); 
 
    window.location = url; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a id="foo" href="https://example.com">Example link</a><br> 
 

 
<button id="test">Redirect to HREF from link</button>

は(あなたが欲しいループ動作については、もちろん、あなたはインラインフレームまたは別のウィンドウにこれらのリンクをターゲットにする必要があるだろう。そうでない場合は、あなたのコードは、すぐにユーザーがその最初のリンクにリダイレクトされるよう実行を停止します。)

+0

重要な場合は、クリックされたリンクが、画面から離れることのないサイドパネルに存在します。 URLはメインパネルで開きます。その場合でもスクリプトは実行を停止しますか? – user3108489

+0

両方のパネルがiframeであり、スクリプトがナビゲーションが発生しているフレームの内側にないと仮定すると、スクリプトは実行を継続します。 –

+0

したがって、リンクをプログラムでクリックするのは適切な方法ではありません。私が手動でリンクをクリックすると、実際にはこのタイプのアクションを実行しています:document.getElementById( "link1")。style.display = 'block'; document.getElementById( "link2")。style.display = 'none';;だから、おそらく遅延のループを作成するだけで、これを変えることができます。 – user3108489

関連する問題