![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
bodyタグの範囲について
質問させてください。
HTMLとJavaScirptで下記のようなソースを書きました。
~ここから~
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title></title>
<script language="JavaScript">
function foo(){
<!--
alert("ほげ");
// -->
}
</script>
</head>
<body onClick="foo()">
<input type="text">
</body>
</html>
~ここまで~
この場合、ウィンドウの中で<BODY>タグが担当する範囲は以下のどちらでしょうか?
1. テキストボックスのみ(余白を含まない)
2. 余白を含んだウィンドウ全体
私としては、関数foo()が実行されるのはテキストボックス内をクリックした場合だけなので、1.だと思います。
しかし、<body>タグの属性のbgcolorをつけると、余白全てが着色されるので、2.なのかもしれないと思い混乱しています。
どなたかお知恵をお貸しください。
No.4ベストアンサー
- 回答日時:
文法上は1.でも2.でもないと思います。
(詳しくは最後に)<body onClick="foo()" style="
margin: 200px;
background-color:blue;
border:10px solid red;
">
画面全体が青くなるのに、ボーダーが書かれるのは<input>のある行だけ。
IE、Webkit、Operaはborder(border上含む)の内部でonclickが発生、
Geckoのみbodyのマージン部分(inputの上)やウインドウ全体で発生。
さらに、<html>の背景色を入れてみると(デフォルトのtransparentから変更)
<html style="background-color:white;">
<body onClick="foo()" style="margin:200px; background-color:blue; border:10px solid red;">
bodyのbackground-colorの範囲がborderと一致します。
ですので、
HTML/CSSは上記全てのブラウザが1.で実装、
JavaScript(イベント発生範囲)のみ、Geckoは2.で実装、それ以外は1.で実装していると思います。
(あくまで「実装」を確認しただけであって、「文法」は確認していません。
最初に書いた1.でも2.でもない、の件ですが、margin:0とするなら1.だと思いますが、
・要素の範囲はmarginとその内部
・backgroundの範囲はborderの内部(borderを含めない)
・onclick(イベントを発生させる範囲)はborderとその内部
と思います。
<div>や<p>と同様に扱うのであれば、ですが、<body>だけ特別扱いするのかどうかはわかりません。
一応、要素の範囲について。。。
私にとっては文法はあまり重要でない(ブラウザを作ってるわけではないので、『実装』の方が重要)ので、詳しく読んでいません。
ですので、私の解釈が間違っている可能性もあります。(むしろその可能性の方が高いと思います)
http://www.w3.org/TR/CSS21/visuren.html
http://msdn.microsoft.com/ja-jp/library/bb250395 …
<html>の背景色を指定しないときに、<body>の背景色をウインドウ全体に塗るのは違うような気がしますが、、、
昔はこれを付けないと背景がウインドウ全体にならなかった気がしますが、記憶違いかな。。。
<style> html,body { height:100% } </style>
No.3
- 回答日時:
bodyの範囲は、<body></body>の内部です。
<input>で発生したクリックイベントは、親要素に向かって伝わって
いきます。(イベントバブリングと呼ばれる)
body onClick="foo()"としてあるので、クリックイベントのバブリングが
body要素に達した時、foo()が実行されます。
↓で試しましょう。inputボックスより下の余白は、クリックしても反応しませんよね!。
背景色とは無関係です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>HTML 5 complete</title>
<style type="text/css">
body {background-color:#ccccff;}
</style>
<script type="text/javascript">
<!--
function foo(event){
var target = event.target || event.srcElement;
alert (target.nodeName);
}
// -->
</script>
</head>
<body onClick="foo(event);">
<input type="text">
</body>
</html>
ありがとうございます。
背景色とは無関係との事ですが、ならばなぜonClick()で反応しない範囲にも着色がされるのでしょうか。
同じbodyタグの属性なので、着色範囲とonClickの反応する範囲は同じである気がするのです。
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
bodyにidをつける理由は何ですか?
-
bodyにwidth:100%をつける理由は?
-
外部ページからハッシュタグ(...
-
「overflow: hidden」ペー ジ内...
-
インラインフレーム内のスクロ...
-
文字を徐々に消していく。
-
初歩的な文字入力フォームの添...
-
テキストボックス内にハイパー...
-
別ページのページ内リンクでの...
-
ハイパーリンクに下線を表示す...
-
読み上げの音声ブラウザに親切...
-
htmlで任意の行の文字位置を右...
-
<a href="#" …>の意味を教えて...
-
呼出したjsファイル内で他jsフ...
-
プルダウンメニュー
-
pythonのWebスクレイピングでfi...
-
javascriptとApacheの設定
-
Vbscriptで自分自身のウィンド...
-
getElementsByNameで要素が取得...
-
javascriptでalertの文字列をコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bodyにidをつける理由は何ですか?
-
(Javascript)印刷するファイル...
-
テキストボックス内にハイパー...
-
別ページのページ内リンクでの...
-
ハイパーリンクに下線を表示す...
-
ページの読み込みが完了してか...
-
横スクロールを右から左へ・・・
-
Chromeがiframe内の「#~」に釣...
-
ページによって表示位置がずれ...
-
"mailtoでメールの【氏名】【性...
-
bodyにwidth:100%をつける理由は?
-
iframeのsrcにページ内リンク(...
-
スクロールバーのスクロール量...
-
ボタンが押されたらWebページの...
-
h1にmarginを指定すると一瞬カ...
-
ホームページ上に『位置固定』...
-
htmlで任意の行の文字位置を右...
-
テキストをクリックすると答え...
-
googleマイマップとのリンクを...
-
-css- ページオープン時やリロ...
おすすめ情報