DOCTYPE宣言の変更でjavaの機能が停止する件について

このQ&Aのポイント
  • DOCTYPE宣言を変更すると、ミスティーネットさんの「JavaScript 活用編 ポップアップメニューの表示」のサンプルが動作しなくなる件について質問です。
  • 「http://java.misty.ne.jp/popup_menu.html」で提供されているサンプルは、DOCTYPE宣言を「<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">」に変更すると、ポップアップメニューが固定表示され、同じ位置にしか表示されなくなるようです。
  • この問題は、XHTMLでは機能しないため起こるものであり、javascriptの記述を変更しても解決することはできません。詳しい方からのアドバイスをお待ちしています。
回答を見る
  • ベストアンサー

DOCTYPE宣言を変更するとjavaが機能しない

ミスティーネットさんの「JavaScript 活用編 ポップアップメニューの表示」 の サンプルを使ってみたのですが、 http://java.misty.ne.jp/popup_menu.html DOCTYPE宣言を <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> に変更すると、ポップアップが固定となり、同じところにしか表示されなくなります。 該当ページのサンプルは、XHTMLでは機能しないのでしょうか。 それとも、javascriptの記述をどこか変更すれば動くようになるのでしょうか。 詳しい方がおられましたら教えていただきたいのですが、よろしくお願いいたします。

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

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.2

ご提示のサンプルを追いかけてみましたが、問題はこの部分でした。 style='position:absolute;top:" + h + ";left:" + w + ";' 直すとしたらこのような感じ。数字の末尾に単位 px をつけています。 style='position:absolute;top:" + h + "px;left:" + w + "px;' CSS で長さや位置を示す際は、必ず単位をつけなければならないのですが、 HTML は数値だけの場合はピクセル(px)を想定するようです。 が、XHTML は厳格に書式を指定しないとエラーとする、が信条ですので書式エラーと見なして無視されます。 ゆえに位置がみな同じところに表示される様でした。 それにしても、このサンプルの内容ですが... 正直いけてないので模倣するのは止めた方がよろしいかと思います。 ブラウザ互換性とか、もうちょっと汎用的に利用できるようにするとか... というわけで jQuery とか如何ですか?

BananatoMikan
質問者

お礼

Ogre7077さん。 指摘された箇所を直したらうまく動作いたしました。 丁寧な解説ありがとうございました。 >正直いけてないので模倣するのは止めた方がよろしいかと思います。 なるほど、jQueryを使ったメニューはおしゃれなものが多いですね。 そちらのほうを探してみたいと思います。

その他の回答 (1)

回答No.1

>DOCTYPE宣言を変更するとjavaが機能しない あたりまえだ。JavaScriptをゼロからまなびなおすこと。と言うより、マークアップランゲージから学んだほうがいいでしょう。SGML , XML HTMLなどのことです。 それぞれのテキストの一章めを読めば、わかってしまうようなことです。

関連するQ&A

  • DOCTYPE宣言は厳密に気にするべきか??

    現在WEBを独学で学んでおります。 そこでDOCTYPE宣言についていくつか疑問に思いました。 ひとつでもわかる方はご回答頂ければ幸いです。 1.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> と、ソースの頭に記述しておいて <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> の内容で記述(XHTML 1.0 Transitionalで記述)することは可能ですか?? つまり、HTML 4.01 Transitionalを宣言して終了タグなど、XHTML 1.0 Transitionalの方式で書いても正確に表示されるかを知りたく思って おります。 2.DOCTYPE宣言を書いてないサイトが多く見受けられますが、 この場合はどのようにDOCTYPE宣言と捉えられるのでしょうか? また、この場合のデメリットとかはありますでしょうか?? 以上、わかる方いましたらよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • DOCTYPE宣言とdocument.body.clientHeight

    お世話になります。 ブラウザのサイズを取得するにはどうすればよいのでしょうか? document.body.clientHeightで取得出来るのは分かりましたが DTDにより動作したり、しなくなるのも分かりました。 ×動作しない <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ○動作する <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 後者のものですとIEでは動作しますが、firefoxでは動作しません。 何か対処法は、御座いませんでしょうか? 一番望む形は <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> の宣言で、ブラウザサイズが取れるようになるのがベストです。 CSSを使用しているので<?xml version="1.0" encoding="UTF-8"?>を入れると 表示モードが互換になるので・・・。 対応したいブラウザはIE6.0、firefox,Safariです。 一応ソース <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> function init(){ var bodyHeight = document.body.clientHeight; alert(bodyHeight); } </script> </head> <body onload="init();"> <div> ほげ </div> </body> </html>

  • hp作成 Firefox javascript dreamweaver

    dreamweaverでHPを作成する時に <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> が入力されています。 この<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">が入力されているとFirefoxでjavascriptを表示できません。 Firefoxでjavascript表示したい時(DTD)はどのような表示が良いでしょうか?

  • DOCTYPE宣言について

    自分はXHTML1.0を参考通り <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> このように二列で入力しているのですが、一列で入力しても大丈夫なのでしょうか?また、オススメの宣言タイプ?があったら教えてください。お願いします。

  • DOCTYPE宣言をするとstyleが適用できない

    webサイト作りの初心者です。 初め、ドキュメントタイプ(DOCTYPE)の宣言を書かずに<html>タグからコードを書いていたのですが、 全体がある程度形になってから、1番上に <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> を追加し、<html>を <html xmlns="http://www.w3.org/1999/xhtml"> に変えると、デザインが変わってしまいました。 具体的には、 <div style="height:960;">~</div> と書いて作っていたブロックの高さが、 DOCTYPE宣言を書く前はちゃんと960になっていたのですが、 書いた後は、中に入っているコンテンツ(テキスト)の高さまで縮み、style部分の数字をいくらいじっても変わってくれません。 他にも、style属性のmargin-leftなどが適用されなくなっていました。 なぜ、DOCTYPEの宣言をするとstyleが適用されなくなったのでしょうか? また、どうすれば適用されるようになるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • DOCTYPE宣言の書き方について

    例えばトラディショナルなら <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> のように表記されると思うのですが、 "http://www.w3.org/TR/html4/loose.dtd" この部分は省略してもいいのでしょうか? 今まで「Dreamweaver MX」を使用していたのですが これで新規ページを作るとこの部分がありません。 「Dreamweaver 2004MX」で新規ページを作ったときにこれが出てたので、 いろいろ他をみたところある方が正しいようです。 しかもこれがある時と無い時で表示が多少変わるのですが、 やっぱり入れた方がいいのでしょうか?

    • ベストアンサー
    • HTML
  • <!DOCTYPE ・・・・

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "○ttp://○ww.w3.org/TR/xhtml1/DTD・・・・・ いまホームーページを作成してみようといろいろ調べています。そこで、こんな感じのタグ?を一番上によく見かけますがどういう意味があるのでしょうか?昔は<html>から始まっていませんでしたか?また後半のURLは何でしょうか?(リンクにならないように○に変換してあります。) よろしくお願いします。

    • ベストアンサー
    • HTML
  • DOCTYPE宣言のURLって何?

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> このDOCTYPE宣言ですが "http://www.w3.org/TR/html4/loose.dtd" が入っているのと入ってないのとで、若干表示に違いが出てくることがあります。今やろうとしていること(長くなるので省略)は、このURLを入れないほうが思った結果になるのですが、なんとなく漠然と「より厳密にHTMLの仕様を定義づける記述」だと思ってたので安易に削除してしまって良いものか躊躇しています。 べつに省略してもたいして問題ないとは思うんですが、そもそもこのURLって何なのですか?細かく取り決めみたいなのが書いてありますが、これを宣言に加えるか加えないかで表示に違いが出るということは、前半の !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" のさらに細密な定義ということなのでしょうか。そうだとしたら別の定義のURLもあるのですか? 詳しいことをご存知の方がおられましたら教えてください。 ※環境はXPpro SP2、エディターはHTMLproject2、ブラウザはIE6、FF1.5です。まあ見られる方の環境は様々なのでウチのを言っても詮無いことですが一応。

    • ベストアンサー
    • HTML
  • XHTML宣言についてですが自分のものでどこがおかしいのか解りません。

    XHTML宣言についてですが、 私はライブドアブログでブログを作っています。 ブログのチェッカーで引っかかりました。 現在の宣言内容です。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> XHTML1.0 では XML宣言をすることが強く求められています。 と指摘されましたがどうしたらいいかわかりません

  • DOCTYPE 宣言

    最初のHTMLの宣言の各部分の意味を教えてください。 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 最初のDOCTYPEはタグだということはわかるのですが それ以外、例えばPUBLICや『-』や『//』DTD,EN、最後のURLなどの意味がわからないです。

    • ベストアンサー
    • HTML