1

重複の可能性:
現在のウィンドウにとどまるようブラウザに指示する方法

要素の onclick アクションを遅らせることはできますか? onclick イベントで関数を呼び出す要素があります。その関数の呼び出しを遅らせるにはどうすればよいですか? onclick アクションを実行する 2 秒前にブラウザを停止するように指示したいと考えています。

エレメントはこんな感じ。

<div id="id01" class="channel" onclick="load_window('http://www.ewtn.com')"><a>EWTN.com</a></div><br/>EWTN television network</div>

load_window 関数内に setTimeout を配置すると、ブラウザは window.open をポップアップとして扱い、停止します。だから私は質問を別の方法で置きたいと思います。onclick を実行する前にブラウザに待機するように指示する方法はありますか? その要素の .click には、他の機能を実行するコードがあります。

    $('.channel').click(function() { 
        $(this).addClass("selected");
        show_layer();
        setInterval("refresh_caption()",300000);
    }); 

load_window() の呼び出しを遅らせながら、ブラウザがそのアクションをユーザーアクションとして処理することを検討しています。

4

2 に答える 2

3

手っ取り早い方法は、load_window呼び出しのタイムアウトをラップする新しい関数を作成し、その新しい関数をonclick値として設定することです。

function channel_click(){

    // anon wrapper function, 2 second delay
    setTimeout( function () {
        load_window('http://www.ewtn.com');
    } , 2000 );

}

それから

<div id="id01" class="channel" onclick="channel_click()"><a>EWTN.com</a></div><br/>EWTN television network</div>

あなたのload_window関数が実際に何をしているのかわからないので、2秒後に何が起こるかわかりません.

繰り返しますが、これはあなたが提供した例に固有のものです。より一般的なアプローチが必要な場合は、より多くの情報を提供する必要があります。

于 2012-05-02T19:58:41.260 に答える
0

いいえ、現在実行中の JavaScript スレッドの実行を遅らせて、その期間ブラウザをハングアップさせる方法はありません。

2 秒が経過するまでタイト ループでループしてからポップアップ処理を実行することもできますが、それはユーザー エクスペリエンスが悪く、一部のブラウザではスクリプトが応答しないために中止されることさえあります。これはまったくお勧めしません。悪いデザインです。

後でいくつかのコードを実行することは、通常は を介し​​て行われsetTimeout()ますが、ポップアップの理由からそれを使用したくないとすでに述べています。

あなたが実際に解決しようとしている問題を説明したい場合は、問題にアプローチする別の方法を提供できるかもしれません。

于 2012-05-02T19:57:38.113 に答える