• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JaveScriptのonmouseover イベントについて )

JavaScriptのonmouseoverイベントについて

このQ&Aのポイント
  • javeScriptのonmouseoverイベントについて、省略可能な理由やブラウザの機能のアップについて教えてください。
  • html内でのonmouseoverイベントの記述に関して、宣言をしなくても正常に表示される理由について教えてください。
  • JavaScriptのonmouseoverイベントが実行される仕組みやパソコン内で自動的に補足されて働くことができるかについて詳しく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • 15mm
  • ベストアンサー率65% (65/100)
回答No.5

>でも、<script type="text/javascript">の記述が望ましいと考えれば良いのでしょうか? そういえば結論がまだでしたね。 何のための記述かによりますが、いらない場合は“省略できる”と捉えず一切切り捨てましょう。 <script></script>を記述したところで、中身(スクリプト)が無いのであれば無意味です。 (推測ですが、寧ろブラウザの内部処理が増え、読込が遅くなるだけかも知れないです) <script type="text/javascript"></script>が意味するところは、 ・このタグの間にスクリプトデータが入っている ・因にこのタグの間はMIMEタイプ:text/javascript、即ちjavascriptの内容である ってことだけです。このscriptタグの中身“だけ”についての記述なので、onmouseoverがあるからという理由だけで <script type="text/javascript"></script>だけを書いておかないと、なんてことはないです。 ところで、こちらが質問の意図を取り違えているかもしれないので、また別の視点からの回答。 イベントの登録方法には何通りかある、という話から。主旨がさらにそれてたら無視してください。 (1) <ELEMENT onclick="var x=1;alert(x)"> この場合は、onclick=""の中に処理内容が全て記述してあります。(2)のようなユーザ定義の関数無しで。 意味も無く<script>を記述する必要はありません。書くべきスクリプトはもう書き尽くしてあるのですから。 <ELEMENT onclick="alert()"><script>/*スクリプト内容が全く無い*/</script>←無駄 (2) <ELEMENT onclick="hoge()"> この場合、hoge()なんて関数は元は存在しないユーザ定義の関数です。 ブラウザが「hogeって?」と混乱しないために、関数hogeを <script>function hoge(){}</script>と定義してあげなければなりません。 このときは<script>を記述し、処理内容を定義してあげないといけません。 (3) ELEMENT.onclick=function(){} javascript側でこのようにイベントを定義する方法のときは、 <script>ELEMENT.onclick=function(){}</script>のように、<script>の中で行わないと解釈してくれません。 (1)は<script>がなくて大丈夫なパターン、(2)(3)が<script>を記述しないと駄目なパターンです。 <script src>の形はまた別の使い方なのでこの限りではありません。 <script> function function2(){alert(2)} function function3(){alert(3)} window.onload=function(){document.getElementById('pattern3').onclick=function3} </script><!--scriptタグ内を除去しても、pattern1のみ動作--> <span id="pattern1" onclick="alert('alertはユーザ定義ではなくwindowオブジェクトが元々有しているメソッド')">1</span> <span id="pattern2" onclick="function2()">2</span> <span id="pattern3">3</span> 注:javascriptは結構柔軟なので「~いけない」などの表現には例外があります。 慣れてきたら"addEventListener"とか"attachEvent"なんてのも検索してみてください。

htmlqa1001
質問者

お礼

 三度のご回答ありがとうございます。 -------------------------------------------引用部分------------ 何のための記述かによりますが、いらない場合は“省略できる”と捉えず一切切り捨てましょう。 <script></script>を記述したところで、中身(スクリプト)が無いのであれば無意味です。 このscriptタグの中身“だけ”についての記述なので、onmouseoverがあるからという理由だけで<script type="text/javascript"></script>だけを書いておかないと、なんてことはないです。 -------------------------------------------ここまで------------- なるほど。喉に詰まっていた小骨が取れました。ありがとうございます。 -------------------------------引用部分------------------- ところで、こちらが質問の意図を取り違えているかもしれないので、また別の視点からの回答。 イベントの登録方法には何通りかある、という話から。主旨がさらにそれてたら無視してください。 --------------------------------ここまで----------------- いいえ、そんなことはありません。こちらの説明で更に解けました。 やっと、気になっていたことが解けてホッとしてますが、 改めて奥が深いなと痛感しました。ありがとうございました。

その他の回答 (4)

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.4

<meta>ではなかったですか。。。そんな雰囲気を感じてしまっただけなんです。ごめんなさい。 ><script type="text/javascript">を記述していなくてもonmouseoverの機能が使えたという意味です。 大雑把に言うと <script>~</script>はスクリプトの定義・実行全般を行います。ページを読み込む段階で実行されていきます。 <ELEMENT onmouseover>はELEMENTにマウスが乗ったときの動作“のみ”を定義します。しかも個別に。ページ読込後の動作関連です。 こちらも目的がやや違います。関連が無いといえば無いので、どちらかを記述しないと・・・といったことは無いです。 以下。本題逸脱。 >Webページを作成するには、HTML、CSS、JavaScriptという3つのタイプがあるという事は正しいのでしょうか? >そしてこれらは別の言語と考えるのか? それとも1つの言語でその中に3つのタイプがあるのでしょうか? 全く別物です。目的そのものも違えば、記述形式とか、まぁそれはそれは同一とはいえないものです。 今のところは、 HTMLで文書構造を記述(どこが見出しで、表があって、画像を張って・・・など) cssでHTML要素各々を飾りつけ(どこを目立つように、ここはこの色・・・など) javascriptではページに動きをつける(のが本来ではないですが 画像を動かす、装飾を変える・・・など) と思っておいて(私は)いいと思います。(決して私の意見だけを鵜呑みにしないように) そして、3つのタイプがある、というのはたぶん解釈の間違いでしょう。 HTMLだけで装飾も済ます(非推奨)方法と、装飾はcssに任せる方法があります。 javascriptは・・・ページ作成において中枢として使うことは無いですね。 (javascriptでスタイル指定するjavascript style sheetsなんてのがNN独自仕様で・・・) >onmouseoverという機能を使うには、JavaScriptを使わないと使えないと思っているのですが? まぁ大きく間違ってはいないですね。(#2のとおり、jsだけではないですが) 余談としては、onmouseoverに限らず、 on~によってjavascriptを実行させる、と捉えなおしてはいかがでしょうか? jsの実行が目的で、onmouseover属性の埋め込みが手段です。 「マウスが上に乗った時に或るjavascriptを実行するためには、onmouseoverイベントハンドラを使わないと」のほうがいいです。 足りなければまたご質問ください。

htmlqa1001
質問者

お礼

 たびたびのご回答ありがとうございます。 少し分かってきたような気がします。(そうだと良いのですが。。。) -----------------------------------------------------------------引用部分----- >Webページを作成するには、HTML、CSS、JavaScriptという3つのタイプがあるという事は正しいのでしょうか? >そしてこれらは別の言語と考えるのか? それとも1つの言語でその中に3つのタイプがあるのでしょうか? 全く別物です。目的そのものも違えば、記述形式とか、まぁそれはそれは同一とはいえないものです。 ----------------------------------------------------------------ここまで--- 良かったです。この部分は考え方として合っていました。 --------------------------------------------------色んな箇所から引用部分----- ><script type="text/javascript">と宣言をしないと機能しない そんなことないです。スクリプトの埋め込みを表すだけで、何も宣言されてないです。 大雑把に言うと <script>~</script>はスクリプトの定義・実行全般を行います。ページを読み込む段階で実行されていきます。 >onmouseoverという機能を使うには、JavaScriptを使わないと使えないと思っているのですが? まぁ大きく間違ってはいないですね。(#2のとおり、jsだけではないですが) 余談としては、onmouseoverに限らず、 on~によってjavascriptを実行させる、と捉えなおしてはいかがでしょうか? jsの実行が目的で、onmouseover属性の埋め込みが手段です。 「マウスが上に乗った時に或るjavascriptを実行するためには、onmouseoverイベントハンドラを使わないと」のほうがいいです。 ----------------------------------------------------------------ここまで--- なるほど、onmouseoverというイベントが先で、 そのためにJavaScriptが実行されると考えれば良いのですね。 だから、<script type="text/javascript">という記述がなくても onmouseoverが働いたのですね。 でも、<script type="text/javascript">の記述が望ましい と考えれば良いのでしょうか? 何度も質問をして申し訳ありませんが、ご回答お待ちしております。

回答No.3

この回答は、求める答えになっていないようなので、先に謝っておきます。 http://www.asahi-net.or.jp/~SD5A-UCD/rec-html401j/interact/scripts.html を、よく×100、読んでみては? 分からないときは、まず「仕様書を見ろ」だそうです。 幸いにしてこれは、日本語です。 もちろん、私は、英語の読解力がないので、こういうのが助かります。 省略しても動くからOKなのではなく、 http://openlab.ring.gr.jp/k16/htmllint/htmllint.html ここで、チェックを受けて100点が取れるようになると、 マークアップのための言語とは・・・・とかの、理解が深まると思いますよ。

htmlqa1001
質問者

お礼

 回答ありがとうございます。 おっしゃる通りですね。一度読んでみます。 きっと時間がかかりそうなので、 先にお礼のみで失礼します。  理解にどの位かかるか・・・・・

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.2

既に十分な回答が出ていますが一つ思い当たったので。 http://www.tohoho-web.com/html/meta.htm より抜粋 ------------ 基準スクリプト言語 文書中の onclick="..." などで呼び出すスクリプトの基準言語を指定します。(language 属性で変更可能です。)スクリプトをサポートする大半のブラウザの基準言語は JavaScript なので、事実上は指定しても指定しなくても大差ありませんが、スクリプトを用いる時は記述しておくことが推奨されています。 <meta http-equiv="Content-Script-Type" content="text/javascript"> ------------ このことでしょうか? ><script type="text/javascript">と宣言をしないと機能しない そんなことないです。スクリプトの埋め込みを表すだけで、何も宣言されてないです。 >省略できるようになったのでしょうか >実はパソコン内で自動的に補足されて働くことができる <meta>のほうは、上記引用の通り、無くて大丈夫なものです。 他にIE限定でvbscriptとかが使われたり(perlもあった気がする)するだけで、そのときは必須。だと思います。 <script>のほうは、スクリプトを表記or読込の為のものです。表記も読込もしないなら不要。 >ブラウザの機能がアップした 私はブラウザが<script>に対応し始めた当時を知らない若造です。存じ上げません。

htmlqa1001
質問者

お礼

 回答ありがとうございます。No.1の方にも申し上げましたが、 多分私自身まだ理解できていないのだと思います。  ご回答頂いた内容についてですが、分からないことの方が 多くて。。。。。。もし宜しかったら、もう少しお付き合い (教えて)頂けると嬉しいです。 ------------ 基準スクリプト言語 文書中の onclick="..." などで呼び出すスクリプトの基準言語を指定します。(language 属性で変更可能です。)スクリプトをサポートする大半のブラウザの基準言語は JavaScript なので、事実上は指定しても指定しなくても大差ありませんが、スクリプトを用いる時は記述しておくことが推奨されています。 <meta http-equiv="Content-Script-Type" content="text/javascript"> ------------ このことでしょうか? 残念ながら違います。<meta> タグ自体あまりよく分かっていません。 実際にWebページを作るときにこの記述はしなくてもWebページは作る ことができますよね。(ちなみに私はメモ帳を使って作っています) ------------------------------------------- ><script type="text/javascript">と宣言をしないと機能しない そんなことないです。スクリプトの埋め込みを表すだけで、何も宣言されてないです。 >省略できるようになったのでしょうか >実はパソコン内で自動的に補足されて働くことができる <meta>のほうは、上記引用の通り、無くて大丈夫なものです。 他にIE限定でvbscriptとかが使われたり(perlもあった気がする)するだけで、そのときは必須。だと思います。 <script>のほうは、スクリプトを表記or読込の為のものです。表記も読込もしないなら不要。 ------------------------------------------- この辺りは全く理解できませんでした。すいません。 ちなみに、Webページを作成するには、HTML、CSS、JavaScript という3つのタイプがあるという事は正しいのでしょうか? そしてこれらは別の言語と考えるのか? それとも1つの言語で その中に3つのタイプがあるのでしょうか? お二人の回答を見てよく分かったことは、上記の疑問が分かって いないので、トンチンカンな質問をしているのでしょうか? 私の感想では、最初の質問からとても離れてしまっている気がします。 多分、私の質問の仕方が悪い(というか、分かっていないことが多すぎて トンチンカンな質問をしている)のだと思います。 すいませんが、もうしばらくお付き合い下さい。お願いします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>その際は<head>タブ内に ><script type="text/javascript">と宣言をしないと >機能しないと思うのですが、 おっしゃる意味がよくわかりません。 そもそもがそんな仕様ではないと思いますが? >記述しなくても正常に表示が >できました。 なんの表示ができたのですか? ポイントとしてはとりあえずオブジェクトに直ガキすればいけるでしょう <span onmouseover="alert('test')">test</span> もちろん、<script>タグで処理をすることも可能でしょうけど またCSSの:hover疑似クラスでも近しいことはできると思います

htmlqa1001
質問者

お礼

回答ありがとうございます。多分私自身がよく分かっていない というか勝手に理解しているのかもしれません。 >その際は<head>タブ内に ><script type="text/javascript">と宣言をしないと >機能しないと思うのですが、 >おっしゃる意味がよくわかりません。 >そもそもがそんな仕様ではないと思いますが? onmouseoverという機能を使うには、JavaScriptを使わないと 使えないと思っているのですが?それがそもそも誤解しているのでしょうか? >記述しなくても正常に表示が >できました。 >なんの表示ができたのですか? <script type="text/javascript">を記述していなくても onmouseoverの機能が使えたという意味です。 >ポイントとしてはとりあえずオブジェクトに直ガキすればいけるでしょう ということは、<script type="text/javascript">の記述は 必要がないという意味でしょうか? >もちろん、<script>タグで処理をすることも可能でしょうけど >またCSSの:hover疑似クラスでも近しいことはできると思います すいません。この辺は全く意味が分かりませんでした。 勉強不足ですいません。

関連するQ&A