MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

html#〜へジャンプしないのは?
https://forums.mozillazine.jp/viewtopic.php?f=30&t=5628
ページ 11

作成者:  pine_kz [ 2007年5月03日(木) 01:34 ]
記事の件名:  html#〜へジャンプしないのは?

ブログへの移行作業をしていて一点解決しません。
http://www.pine-kz.com/camera/sb/ で、記事下の commentsをクリックしてコメント入力欄へジャンプしたいのですが、ページトップが表示されます。

記事下の日付の横に 2007/04/09 月 20:57 <a name="comments">|</a> と書いているのですが、動作しません。エラーコンソールにはエラーがでません。

Linux版ですが、同じLinuxのkonquerorでは、期待どおりジャンプします。
firefoxの解釈がstrictだという記事をどこかで見たのですが、正しい記述はどう書けばよいのでしょうか?

作成者:  Piro [ 2007年5月03日(木) 01:40 ]
記事の件名:  Re: html#〜へジャンプしないのは?

ページのソース見てみたら
<a name="comments">

<h3 id="comments">
と、「#comments」の指し示す先にあたりそうな箇所が2カ所もありました。
もしかしてこれのせい?

作成者:  pine_kz [ 2007年5月03日(木) 02:56 ]
記事の件名:  当たりでした

Piro さんが書きました:
ページのソース見てみたら
<a name="comments">

<h3 id="comments">
と、「#comments」の指し示す先にあたりそうな箇所が2カ所もありました。
もしかしてこれのせい?


<h3 id="_comments"> のように書き換えたらページトップには飛ばなくなりました。
属性名をnameとidで明確に書き分けてるのに混同されるのは、全然 strictでないですね。なんだかなー。

konquerorのように<a name="comments">部分がきちんと表示の最上段にならず、クリックする前と同じ位置になるのも釈然としないのですが、当面の問題は解決しました。ありがとうございました。

(最初、借り物のテンプレートのDOCTYPEがXHTMLでjavascriptが機能しなくて悩んだのですが、その時もkonquerorで動作するのにfirefoxはダメでした。ただエラーコンソールにオブジェクトのプロパティがないとか出ていて、firefoxのほうの解釈が厳格なのだと理解したのです。その他の機能でkonquerorよりfirefoxのほうが快適なので戻る気にはなれませんが)

作成者:  Piro [ 2007年5月03日(木) 12:14 ]
記事の件名:  Re: 当たりでした

HTMLの仕様によると、異なる要素でnameとidに同じ値を用いてはいけないことになっているようです。

http://www.asahi-net.or.jp/~sd5a-ucd/re ... l#h-12.2.3
引用:
id属性とname属性は、同じ 名前空間を共有する。これはつまり、同一文書では、両属性が、あるアンカーに同じ名前を定めることができないということを意味する。次の要素においては、両属性で、文書中で固有となる識別子を指定することが許される。 A、APPLET、FORM、FRAME、 IFRAME、IMG、及びMAP要素である。単一要素中で両属性が用いられる場合、各々の値は同一でなければならない。


XHTML 1.1でもこれは同様です。
http://msugai.fc2web.com/web/W3C/XHTMLM ... dentmodule

HTMLにエラーがあった場合の回復処理は特に仕様で規定されているわけではないので、画像のalt属性の値をポップアップ表示しないのと同じように、ポリシーの問題と言えるかもしれません。


また、<h3 id="_comments">も宜しくない書き方のようです(idをアンダースコアで開始してしまっている)。

http://www.asahi-net.or.jp/~sd5a-ucd/re ... html#h-6.2
引用:
IDトークンとNAMEトークンは、アルファベット([A-Za-z])で開始し、任意の数のアルファベット、数字、([0-9])、ハイフン(-)、アンダースコア(_)、コロン、(:)、ピリオド(.)のみで記述する必要がある。


こちらはXHTML 1.0かXHTML 1.1なら問題ないようです(idの先頭に使える文字の制限が大幅に緩和されている)。

作成者:  Kuro [ 2007年5月03日(木) 21:06 ]
記事の件名:  Re: html#〜へジャンプしないのは?

pine_kz さんが書きました:
firefoxの解釈がstrictだという記事をどこかで見たのですが、正しい記述はどう書けばよいのでしょうか?

とりあえずこの点だけ。
「Firefox の解釈が Strict」が何を言っているのかはわかりません。
W3Cのルールに厳格に処理して表示する標準モード(Standard mode)か、少しのタグ記述ミスをあたかもミスしていないように表示する後方互換モード(Quirks mode)かを切り替えているのは、マークアップ時一番先頭に記述する DOCTYPE で指定します。

Mozilla の DOCTYPE 判別
http://www.mozilla-japan.org/docs/web-d ... types.html
その他のブラウザでの DOCTYPE 判別は、調べれば沢山出てくるので省略します。

pine_kzさんの出されたURLのDOCTYPE を確認すると、何も記述されておらず HTML 要素から始まっているので、Firefox では後方互換モード(Quirks mode)で表示されていることが分かります。

DOCTYPE を疎かにして痛い目にあったクチなので(汗)、この機会に調べてみるのも良いと思います。

作成者:  pine_kz [ 2007年5月04日(金) 02:11 ]
記事の件名:  Re: html#〜へジャンプしないのは?

Standard とQuirks。そう書いてあったと思います。
konquerorで動作するので、DOCTYPEの記述がじゃまなのだと思い、Quirksでやってくれれば良いと消してしまいました。

・・・idとname属性が同じ記述ではいけないという規約があるのは知りませんでした。というか読んだこともない。idとnameは同じような使いかたをするものだと想像できるけど、それが異なる名称で規定されているので、機械的に区別されると思うのがこれまた常識的でしょう。HTML規約ってむちゃくちゃなんだなと思いました。

と愚痴を言ってもしかたないですね。Quantaでチェックしてみたら、
line 77 column 1 - Warning: <h3> attribute "id" has invalid value "_comments"
line 77 column 1 - Warning: <h3> anchor "comments" already defined

と仰る通りのWarningが出ましたが、name属性でalready defined なのかー。難しいです。

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/