
No.5ベストアンサー
- 回答日時:
http://dev.w3.org/html5/spec/sections.html#the-b …
HTML5の方を読むと、
『window.onfocusはHTMLタグとして書けないから、<body onfocus="">で書いてちょ。ブラウザはwindowに置き換えてちょ。』
ということのようですね。
HTMLとJavaScriptの関係では、document.body.onfocusは<body onfocus="">と同等なのでwindowにマッピングされるのかもしれませんが、
addEventListenerによるイベントリスナーの登録は別物なので、
文字通り<body>にフォーカスが当たらなければonfocusイベントが呼び出されないと思います。
jQueryは全面的にaddEventListener/attachEventを使っていると思いますので、
jQueryを使うと、結果的にbodyに登録されたイベントリスナーが呼び出されなくなると思います。
デフォルトでフォーカスが当たる要素は下のページにあるように<a>や<input>などです。
<body>にフォーカスを当てる方法としてNo.3とおりtabindexが使えるようです。
http://dev.w3.org/html5/spec/editing.html#specia …
>An element is specially focusable if the tabindex attribute's definition above defines the element to be focusable.
HTML5の方を読むと、
『window.onfocusはHTMLタグとして書けないから、<body onfocus="">で書いてちょ。ブラウザはwindowに置き換えてちょ。』
ということのようですね。
HTMLとJavaScriptの関係では、document.body.onfocusは<body onfocus="">と同等なのでwindowにマッピングされるのかもしれませんが、
addEventListenerによるイベントリスナーの登録は別物なので、
文字通り<body>にフォーカスが当たらなければonfocusイベントが呼び出されないと思います。
jQueryは全面的にaddEventListener/attachEventを使っていると思いますので、
jQueryを使うと、結果的にbodyに登録されたイベントリスナーが呼び出されなくなると思います。
デフォルトでフォーカスが当たる要素は下のページにあるように<a>や<input>などです。
<body>にフォーカスを当てる方法としてNo.3とおりtabindexが使えるようです。
http://dev.w3.org/html5/spec/editing.html#specia …
>An element is specially focusable if the tabindex attribute's definition above defines the element to be focusable.
No.4
- 回答日時:
ごめんなさい、寝ぼけてすごく的外れなことを書きました。
No.3 は全面撤回します。jQuery に問題はなく、No.2 が正しいです。body は(そのままでは)キーボードフォーカスの対象になりませんので、body で focus を監視してもイベントリスナに通知されません。body でキーボードフォーカスを拾えるようにするには <body tabindex="0"> のように 0 以上の tabindex を付加します。
しかし、それはウィンドウ全体のフォーカスではありません。もしウィンドウのフォーカスを拾いたければ、No.2 が仰るように window を監視します。
失礼しました。
No.3
- 回答日時:
jQuery 1.6.1 を追跡すれば分かりますが、本来内部的に
document.addEventListener('focus', handler, true); // キャプチャリング
document.attachEvent('onfocusin', handler); // イベント名は "focusin"
のように修正されるべき所がスルーされて、"focus" のバブリングのまま登録されているからです。修正コードは jQuery に含まれているはずですが、それが実行されないバグなのか、何か他の手順が必要なのか、jQuery のリファレンスないしバグトラッカーなどで確認して下さい(私は追いかける気はないので)。
---
なお、body の onfocus は DOM3 Events および HTML5 に収録されています。この部分は主要ブラウザ間の仕様調整にもとづく後づけ規定なので、今のブラウザでも動くと考えて構いません。
それと、言うまでもありませんが一応。body(もしくは window)の focus イベントで alert() すると無限ループになる可能性があるので、十分注意して下さい。
No.2
- 回答日時:
http://www.w3.org/TR/html4/interact/scripts.html …
<body onfocus="">はHTMLやDOMとして定義されていませんので、ブラウザ依存になるはずです。
window.onfocus、window.onloadなどで処理した方が確実だと思います。
<body onfocus="">はHTMLやDOMとして定義されていませんので、ブラウザ依存になるはずです。
window.onfocus、window.onloadなどで処理した方が確実だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- HTML・CSS HTMLタグのあるCSVファイルを利用する方法 4 2023/03/19 14:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- 英語 Osseointegration has been suggested to represent a 3 2022/06/10 08:22
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
function の return 値を表示し...
-
SCRIPT5007: 未定義または NULL...
-
JavaScriptでiframeの内容を「...
-
自動ジャンプでフォームデータ...
-
出荷予定日を表示するJavaスク...
-
javascriptでクリックしたリン...
-
リンク移動先のURLを取得
-
キーを押している間の時間を計...
-
getElementsByNameで要素が取得...
-
HTMLとJAVASCRIPT
-
<a href="#" …>の意味を教えて...
-
親ウインドウの判別
-
javascriptでラジオボタンをチ...
-
window.openの後にエンコードを...
-
bodyにidをつける理由は何ですか?
-
Vbscriptで自分自身のウィンド...
-
ポップアップウィンドウの位置
-
適切なページ分けのループを教...
-
【js】attrで属性を取得する...
-
JavaScriptのエラー ( 関数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
JavaScriptでiframeの内容を「...
-
キーを押している間の時間を計...
-
SCRIPT5007: 未定義または NULL...
-
JavaScriptでの西暦下2桁での表...
-
htaでVBSのソースを書いたらエ...
-
クリックすると別の文章を表示する
-
日付のチェック
-
AjaxでXMLの要素が取得できない
-
引数付きで呼び出す関数・配列...
-
JavaScriptでのEnterキーとAlt+...
-
【js】onsubmit属性が変更できない
-
フォーカス移動抑止について
-
bodyタグのfocus
-
AjaxでDBから取得したデータを...
-
IEの拡大・縮小機能をWebページ...
-
idHOGEで取得したinnerText(数...
-
iframeの中から親ページをスム...
-
function の return 値を表示し...
-
「オブジェクトを指定してくだ...
おすすめ情報