6

div をクリックするとリストが表示されるドロップダウン メニューがあります。

フォーカスアウトすると、リストを非表示にすることになっています(つまり、ユーザーがマウスアウトではなく他の要素をクリックまたはフォーカスした場合)。したがって、私の明白な選択は でしたonblur

JavaScript は Firefox では動作するようですが、IE では動作しないようです。これは、div に高さと幅が指定されたサブ div があるためです。これは、テスト ファイルで再現可能です。jQueryを使用しています。

これは Internet Explorer の既知の問題ですか? そして、回避策は何ですか?

<html>
  <head>
    <title>Exploring IE</title>
    <style type="text/css">
      /** Exploring IE**/
      .selected_option div {height:18px;}
    </style> 
    <script type="text/javascript" src="jquery-1.3.2.min9919.js"></script>
    <script type="text/javascript">
      $().ready(function(){
        $('.selected_option').blur(function(){
          alert('blurred');
        });
      });
    </script>
  </head>
  <body>
    <div class="selected_option" tabindex="0">
      <div>anywhere in the page</div>
    </div>
  </body>
</html>
4

6 に答える 6

7

IE独自のfocusoutイベントがうまくいきました:

$('.selected_option').bind('focusout', function(){
    alert('focusout');
});

繰り返しますが、これは独自仕様 ( quirksmodeを参照) ですが、問題が解決する場合は適切な場合があります。blurfocusoutイベントの両方にいつでもバインドできます。

于 2009-08-24T18:50:54.617 に答える
2
onkeypress="this.blur(); return false;"

すべてのIEバージョンで正常に動作します

于 2010-10-28T06:54:34.753 に答える
1

これらは単純にフォーカス可能であるため、div の代わりにアンカー タグを使用してみてください。アンカーの href を「javascript:void(0)」に設定して、実際にページにリンクしないようにし、css プロパティ「display: block」を使用して div のようにレンダリングすることができます。このようなもの:

<html>
  <head>
    <title>Exploring IE</title>
    <style type="text/css">
      /** Exploring IE**/
      .selected_option
      {
        display: block;
        height:18px;
      }
    </style> 
    <script type="text/javascript" src="jquery-1.3.2.min9919.js"></script>
    <script type="text/javascript">
      $().ready(function(){
        $('.selected_option').blur(function(){
          alert('blurred');
        });
      });
    </script>
  </head>
  <body>
    <a href="javascript:void(0)" class="selected_option">anywhere in the page</a>
  </body>
</html>

これをテストしていませんが、動作するはずです。

于 2009-08-24T14:24:55.597 に答える
1

最初にfocus、イベントはフォーカス可能な要素blurでのみサポートされていることに注意してください。sをフォーカス可能にするには、プロパティを確認する必要があります。<div>tabindex

于 2009-08-14T14:19:36.287 に答える
0

試す:

$('.selected_option').bind('blur', function(){           
          alert('blurred');
});

また、別のトリックを作成することもできます。すべてのマウスクリックやフォーカスイベントを処理し、別のコントロールが選択されている場合は、自分のコントロールがぼやけます(もちろん以前に選択されていた場合)。

于 2009-08-14T12:38:45.750 に答える
0

div の tabIndex プロパティをフォーカス可能に設定しました。さらに、ぼかしイベントが発生する高さをコメントすると、問題はないと思います。

于 2009-08-17T07:14:55.360 に答える