6

これは、フォームフィールドではなく、ウィンドウのフォーカスイベントとブラーイベントに関連していることに注意してください。

ポップアップウィンドウにドキュメントを読み込んでいますが、次のコードが含まれています。

<script type="text/javascript">
window.onblur = function(){ document.title="BLURRED"; }
window.onfocus= function(){ document.title="FOCUSED"; }
</script>

これらの関数は、テストのために一時的なものです。これらのイベントを使用して、ウィンドウの状態を示すフラグを設定したいと思いました。私はチャットアプリをやっていて、メッセージが最小化されたときにメッセージが届いたら、注意を引くタイトルの変更を行います。ただし、ウィンドウがフォーカスされたときにキャンセルしないと、煩わしいだけになります。

オンロードでは、テキストエリアにもフォーカスを置きます。(それが違いを生むかどうかはわかりません。)

IE7(私は便利な別のバージョンを持っていません)は認識しているようですが、認識してwindow.onblurいませんwindow.onfocus。Opera10はまったく奇妙です。

これが私が持っているブラウザで何が起こるかです。親のリンクをクリックしてポップアップウィンドウを起動し、(Windows XP)タスクバーのポップアップボタンをクリックして、最小化と復元のサイクルをいくつか実行します。

Safari 4:

  • ウィンドウを開く:ドキュメントが元のタイトルで開きます
  • 最小化:タイトルが「BLURRED」に変更されます
  • 復元:タイトルが「FOCUSED」に変更されます

これは私が起こると思っていたことです。

Firefox 3.5:

  • ウィンドウを開く:ドキュメントが元のタイトルで開き、「FOCUSED」に変わります
  • 最小化:タイトルが「BLURRED」に変更されます
  • 復元:タイトルが「FOCUSED」に変更されます

オンフォーカスの負荷は少し驚きですが、問題ではありません。

IE7:

  • ウィンドウを開く:ドキュメントが元のタイトルで開きます
  • 最小化:タイトルが「BLURRED」に変更されます
  • 復元:何度切り替えてもタイトルは変わりません

オンフォーカスはどうなりましたか?

Opera 10.5

  • ウィンドウを開く:ドキュメントは元のタイトルで開きますが、ポップアップではなく別のタブで開きます

時々...

  • 最小化:タイトルが「BLURRED」に変更されます
  • 復元:タイトルが「FOCUSED」に変更されます

時々...

  • 最小化:タイトルが「BLURRED」、「FOCUSED」に変更されます
  • 復元:タイトルは変更されません

さて、これは単なる奇妙なことです...

私は他のアプローチを受け入れていますが、ここで何が起こっているのか、昔ながらのJavascriptで本当に理解したいので、これを回避する方法が他にない場合を除いて、jQueryの回答を与えないでください。

4

1 に答える 1

6

onfocusonblurは、IE の window オブジェクトでバグがあります。別の方法として、伝播するonfocusinおよびonfocusoutイベントを使用する方法があります。

function focusin() { document.title="BLURRED"; }
function focusout() { document.title="FOCUSED"; }

if ("onfocusin" in document)
    document.onfocusin = focusin,
    document.onfocusout = focusout;
else
    window.onblur = focousout,
    window.onfocus= focusin;

ここに例を用意しました。

focusおよびfocusとは異なり、focusinおよびfocusoutは伝播イベントです。それらはページ内の要素に対して発火し、上向きに泡立ちます。ページ上のすべての要素に対してこのイベントを処理したくない場合は、 event.srcElementまたはevent.targetを確認する必要があります。

Opera に関して言えば、「奇妙な」というのは 1 つの言葉です。私のマシンのバージョンでは、ウィンドウでぼかしまたはフォーカス イベントが発生しません。他の誰かがその解決策を提供してくれることを願っています。

于 2010-09-19T13:10:47.817 に答える