0

ユーザーがページの外側をクリックした場合にイベントをトリガーすることはできますか?より具体的には、ブラウザのタイトルバーまたはタブバーで?

これを私のjsFiddleの例で試してください。

HTML

<div id="box">
    <div id="menu">Click here</div>
    <div id="show">Hello!</div>
</div>

JS

jQuery('div#menu').on('click', function(ev) {
    jQuery('div#show').addClass('visible').css({
        top: ev.clientY,
        left: ev.clientX
    });

    return false;
});

jQuery(document).click(function() {
    jQuery('div#show').removeClass('visible');
});

jQuery(window).blur(function() {
    jQuery(document).click();
});

テスト

まず、「ここをクリック」ボタンをクリックします。それで...

  1. ドキュメントの一部をクリックしてみてください:OK
  2. ページの一部をクリックするか、ブラウザウィンドウのフォーカスを解除してみてください:OK
  3. ブラウザで開いている他のタブをクリックしてみてください:OK
  4. ブラウザのタイトルバーまたはタブのタイトルをクリックしてみてください:失敗

それで...

この問題を解決することは可能ですか?

試験結果

  • Chrome:最後に失敗します。
  • Firefox:最後に失敗します。
  • IE10:最後に失敗します。
  • Opera:最後に失敗します。
4

1 に答える 1

1

申し訳ありませんが、これは不可能です。

理由?基本的に、ウィンドウのタイトル バー/タブ バーをクリックしても、実際には要素がフォーカスを失うことはありません。

ここでこの例を試してください:

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onblur

タイトル バー/タブ バーをクリックしても、テキスト ボックスのフォーカスがまったく失われないことがわかります。これが問題の原因です。

ただし、これはあなたのプロジェクトにとって大したことではないと思います。ユーザーに関する限り、現状のままで見栄えがします。

于 2013-03-02T07:32:52.577 に答える