0

リンクをクリックするとページ全体がフェードアウトするリンクがあるとします。ページをフェードアウトする理由は、次のページがロードされようとしているが、まだロードされていないためです。pointer-events: none次のページがロードされるまでマウスイベントを無効にするものを使用できます。

キーボードで行われたと仮定すると、次を使用して二重入力を防ぐか、内部のすべての要素をきれいに無効にすることができます。たとえば、タブ入力もこの方法で無効になります。

parent.onkeydown = fals
parent.onkeyup = fals
parent.onkeypress = fals
function fals() {return false}

これは短いロードではうまく機能しますが、ロードに長い時間がかかる場合、ユーザーは次の問題に気付くかもしれません。

  • a タグから離れることはできません。
  • ブラウザを制御するいくつかのキーボード ショートカットを使用できません。
  • アドレスバーから無効な領域にタブで移動できます。

すべての子要素に onfocus=blur を設定する以外に、これら 3 つの問題を防ぐための現代的で洗練された方法はありますか? 今日はIEは気にしません。

4

1 に答える 1

0

あなたが話していることのようなものを扱う一般的に受け入れられている方法は、モーダルを使用することだと思います。つまり、彼らがそのリンクをクリックすると、「処理中」などのボックスがポップアップし、作成します。他のすべての上にz-indexがあるフルスクリーンdiv。これにより、ユーザーは、実行していることをすべて実行するまで、画面上の他のものをクリック/操作できなくなります。

私が話していることの例については、http://twitter.github.com/bootstrap/javascript.html#modalsを参照してください。

于 2012-10-19T18:11:45.897 に答える