• 締切済み

宣言文とjavascript

javascriptでチップヘルプを表示させています。 文字にマウスが乗れば説明文が表示されるものです。 こちらの宣言文を <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 下記のもの <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> に変更すると、チップヘルプが上手く表示されません。 指定した位置より、かなり離れてしまいます。 ブラウザ別(IEとFirefox)で確認したところ、Firefoxでは表示もされないようになります。 こちらを解消する方法はあるのでしょうか?

  • HTML
  • 回答数5
  • ありがとう数2

みんなの回答

回答No.5

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <script type="text/javascript"> function TooltipFlip(obj,id){ var Tooltip = document.getElementById(id); if (Tooltip.style.display == "none"||Tooltip.style.display == ""){ var X; var Y; obj.style.position = "absolute"; X = obj.offsetLeft; Y = obj.offsetTop; obj.style.position = "relative"; Tooltip.style.position = "absolute"; Tooltip.style.left = 15 + X + "px"; Tooltip.style.top = 10 + Y + "px"; Tooltip.style.opacity = 0.3; Tooltip.style.display = "block"; Tooltip.style.filter = "alpha(Opacity='30')"; } else{ Tooltip.style.display = "none"; } } </script> <style type="text/css"> body{ height:700px; background-color:yellow; } p{ background-color:pink; width:80%; } #tooltipbundle p{ width:30%; display:none; background-color:orange; } .tooltip{ background-color:red; } </style> </head> <body> <p><span class="tooltip" onclick="TooltipFlip(this,'fuga');">今日の朝飯</span>は不味かった。腹の調子が悪い。</p> <p>不味かったといえば<span class="tooltip" onclick="TooltipFlip(this,'gura');">昨日の晩飯</span>は不味かった。</p> <div id="tooltipbundle"> <p id="fuga">賞味期限切れの納豆</p> <p id="gura">泥団子</p> </div> <p>なんだかよくわからなかったから全部書き直してみた。leftやtopには 単位"px"がないといけない。</p> </body> </html>

kuroro0000
質問者

お礼

わざわざ書き直して頂いてありがとうございます。 なんとなくヒントになったような気がします。 いろいろと試してみます。

回答No.4

調べてみないとわかりませんが、 element.topとか、標準モードでは使えなかったと思います。 それ以外にもいくつか互換モードでは使えるが標準モードでは使えないプロパティや、 それとは逆に標準モードでは使えるが互換モードでは使えないプロパティもありますので、 標準モードと互換モードの両方をサポートするなら、 それら全てを考慮しないと行けません。 スタイルシートを使っても、その解釈の仕方が違うことがありますから、 文法上は正しくても表示は異なることがありますので、注意して下さい。 新しいメジャーなブラウザは、互換モードではCSS1、標準モードではCSS2が使われます。

kuroro0000
質問者

お礼

ご回答ありがとうございます。 双方のモードでサポートの考慮と言うわけではなかったんですが、モードの違いで記述が異なるようですね。 自分はjavascriptの専門ではないので、ただ単にコピペして使用していたのですが、某HPのガイドラインで宣言文を変更しなくてはいけなくなりまして・・・。 どちらにせよ、互換モード、標準モードも相違にあるようですね、原因は。 少し弁口してみます。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

loose.dtdを指定したら、「標準モード」になって、何もつけないと「互換モード」になります。 「互換モード」で表示されて「標準モード」で正しく出ないのであれば、cssの記述がおかしい(指定している位置がおかしい)のではないでしょうか。

noname#39970
noname#39970
回答No.2
回答No.1

そんなん実際のjavascriptのコード見てみないとわからないよ(笑) title属性を使っているっていうんでもないんでしょ? できるだけ状況が再現する短いコードを回答者に示してくれなきゃ。 こっちで再現できれば調べてみるけどね。 http://japanese.joelonsoftware.com/Articles/PainlessBugTracking.html http://developer.mozilla.org/ja/docs/Bugzilla-jp:Guide

kuroro0000
質問者

補足

ちょっと長いですかね?どこに原因があるか分からないので。 基本的にCSSでは位置指定してません。 timerID = 0; sec = 20 * 1000; var o=30; var Win = navigator.userAgent.indexOf('Win')!=-1; var Mac = navigator.userAgent.indexOf('Mac')!=-1; var X11 = navigator.userAgent.indexOf('X11')!=-1; var Moz = navigator.userAgent.indexOf('Gecko')!=-1; var Safari = navigator.userAgent.indexOf('Safari')!=-1; var msie = navigator.userAgent.indexOf('MSIE')!=-1; function MM_showHideLayers() { //v3.0 var i,p,v,obj,args=MM_showHideLayers.arguments; for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2]; if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; } obj.visibility=v; } } function b_color(idname,cn){ if (document.getElementById) { document.getElementById(idname).style.backgroundColor = cn; } } function replace_css(id,url){ if(!document.getElementById) { return false; } var element = document.getElementById(id); if(!element || !element.cloneNode) { return false; } var new_node = element.cloneNode(true); new_node.href = url; element.parentNode.replaceChild(new_node,element); return true; } function sDomChipHelp(divID,eventOBJ) { var offX = offY = 0;var x;var y; if (document.all) { //IE x=eventOBJ.x; y=eventOBJ.y; chipOBJ = document.all[divID].style; offX = document.body.scrollLeft; offY = document.body.scrollTop; chipOBJ.visibility = "visible"; switch (divID) { case 'popc001': chipOBJ.left = x +10 + offX; chipOBJ.top = y +10+ offY; break; } } else { // Not IE x=eventOBJ.pageX; y=eventOBJ.pageY; if (document.layers) { // ? chipOBJ = document.layers[divID]; } else { // Netscape 7 Win chipOBJ = document.getElementById(divID).style; } chipOBJ.visibility = "visible"; switch (divID) { case 'popc001': chipOBJ.left = x+15; chipOBJ.top = y+10; break; default: chipOBJ.left = x; chipOBJ.top = y; } } timerID = setTimeout("hChipHelp('"+divID+"')",sec); } function hChipHelp(divID) { if (document.all) { // IE chipOBJ = document.all[divID].style; } else { // Not IE if (document.layers) { // ? chipOBJ = document.layers[divID]; } else { // Netscape 7 Win chipOBJ = document.getElementById(divID).style; } } chipOBJ.visibility = "hidden"; clearTimeout(timerID); } function fade(obj,v) { if (document.all) { //IE obj.filters["alpha"].enabled = true; obj.filters["alpha"].style = 0; if (v) { obj.filters["alpha"].opacity = o; } else { obj.filters["alpha"].opacity = 100; } } else { // Not IE if (Moz) { if (v) { document.getElementById(obj.name).style.MozOpacity = 0.3; } else { document.getElementById(obj.name).style.MozOpacity = 1; } } else { obj.filters["alpha"].enabled = true; obj.filters["alpha"].style = 0; if (v) { obj.filters["alpha"].opacity = o; } else { obj.filters["alpha"].opacity = 100; } } } }

関連するQ&A

  • 外部JavaScriptのエラー

    外部JavaScriptのファイルを開くときに、「'document'は宣言されていません」と表示されてしまいます。 どうしたら解決できるでしょうか。 JavaScriptに関しては初心者です。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 適用されるページはこのように宣言していますが、ここに問題があるのでしょうか。 回答お願いします。

  • html 「DOCTYPE記述」について

    こんにちは。 タイトルの件ですが html4.01 Transitionalで宣言する場合、 <1> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> のように記述しますね。 上記に「http://www.w3.org/TR/html4/loose.dtd」を付け加えて <2> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">とも書きますね。 <1>と<2>差異は何でしょうか? <1>はスタンダードモード、<2>は互換モードであるとは理解していますが、そうだとすれば、<2>はStrictで宣言した場合と同じ結果になるのでしょうか? 詳しい方、教えていただけますか。 どうぞ宜しくお願いします。

    • ベストアンサー
    • 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
  • <ruby>を使う時のDOCTYPE宣言は?

    HPのことで質問です。 <ruby>タグを使ったホームページをAnother HTML-lint gatewayにかけたところ、「他のHTML用」だと言われてしまいました。どうやらDOCTYPE宣言が原因のようです。そのページは<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> で作成しました。<ruby>タグを使えるDOCTYPE宣言は何になるでしょうか?

    • ベストアンサー
    • HTML
  • 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宣言の書き方について

    例えばトラディショナルなら <!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
  • 、<html>より上には何を入れればいいのでしょう

    HPを作る際に、<html>より上には何を入れればいいのでしょうか? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> でいいのでしょうか? それとも <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> でしょうか?

    • ベストアンサー
    • 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)はどのような表示が良いでしょうか?

  • Docytype宣言とスターハックについて

    CSS初心者です。 擬似フレーム使用且つ、メニュー欄に置いて半透明PNG画像を使ってみたいと思い、CSSをいじっているのですが、当方のプラウザがIE6なので、IE6の場合、半透明PNGの代わりにフィルターのかかったgif画像を使おうと思い、スターハックでその指定をしてみました。 ところが、プラウザではスターハック以下の事項を読み取ってくれません。 原因としては、Docytype宣言にあるような気がするのですが、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> でもスターハックは使えるものでしょうか? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> に宣言を変えるとスターハック以下が働くのですが、擬似フレームが崩れてしまい…と悩んでいます。

    • ベストアンサー
    • HTML
  • html4で宣言していることになるのでしょうか?

    ソースの一番最初に <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> と書いた場合、 html4で宣言していることになるのでしょうか? html5は聞いたことが有りますが html4と言うのは存在するのでしょうか? html4.1と言うのは聞いたことがあります。

    • ベストアンサー
    • HTML

専門家に質問してみよう