1

私のアプリケーションのセッション管理は、セッションがタイムアウトしたことをユーザーに通知するページにユーザーをリダイレクトします<a href="path/to/page.html" id="manual_link">sign in</a>

私は次の動作をプログラムしようとしています:

  1. JavaScriptがオフの場合(または使用できない場合)、ユーザーは「サインイン」リンクをクリックする必要があります(POHTML、問題ありません)。
  2. JavaScriptが実行されている場合:

    a)。プログレッシブ-リンクを拡張して、代わりに「security_redirect」(document.getElementById('manual_link').onclick = "javascript:submit_security_redirect(); return false;";)のIDで非表示のフォームを送信します

    b)ユーザーが最初にリンクをクリックしない場合は、4秒の遅延(remaining_time4000と想定)後にフォームを自動送信します。

        setTimeout(function () {
            submit_security_redirect();
        }, remaining_time);
    

4秒のdelay-then-submitが発生していますが、ユーザーが4秒待ちたくない場合は、リンクをインターセプトすることができないようです。つまり、ユーザーが1秒後にリンクをクリックすると、4秒が経過するまで何も起こりません。

リンククリック時にsetTimeoutを強制終了する必要があると思いますが、方法がわかりません(clearTimeoutでの手探りの試みは非常に残念でしたが、例のJSFiddleには含めていません)。および/または'のデフォルトの動作を防ぐ必要があります(私はそれを二乗するaと思っていましたが)。return false

目的の機能を実現するには、どのような変更が必要ですか?

4

1 に答える 1

2

onclickHTMLで属性を設定するのと同じ方法でそのように設定することはできませんonclick。たとえば、次のような関数に属性を設定する必要があります。

document.getElementById('manual_link').onclick = function() {
    submit_security_redirect(); return false;
};

Javascriptを介してイベントハンドラーを追加する場合、addEventListener実際には設定よりも呼び出しの方が優れていますonclickが、残念ながらIEバージョン8以前では機能しません。これが、jQueryなどのクロスプラットフォームライブラリがイベント処理に最適である理由の1つです。

ところで、arguments.calleeは非推奨になりました(Arguments.calleeは非推奨になりました-代わりに何を使用する必要がありますか?)。

于 2013-02-25T01:13:28.800 に答える