- - PR -
XHTMLにするとbodyのonscrollが動かなくなる
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-23 15:03
いつもお世話になります。現在vb.net(2003)で開発をしています。
全て、HTMLからXHTMLに変更しないといけなくなり、1から2に変更しました。 1.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> その結果bodyタグのonscrollイベントが動かなくなってしまいました。 解決方法はあるのでしょうか? よろしくご教授お願いいたします。 | ||||||||||||
|
投稿日時: 2006-10-23 15:19
XHTMLの属性にonscrollってあります? >識者の方
また、bodyで使用できるのは、onload, onunload, + 属性集合Events(onclick, ondblclick , onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown , onkeyup) だけっぽいんですけど。 以下、つかえるという前提で、 bodyの子要素としてdiv一個挟み、そこにonscroll記述したらどうなるだろう? | ||||||||||||
|
投稿日時: 2006-10-23 15:29
onscrollはInternet Explorer限定のJavaScriptのイベントハンドラだった気がします。
_________________ 己への戒め 「活動的な馬鹿より恐ろしいものはない」 by ゲーテ | ||||||||||||
|
投稿日時: 2006-10-23 15:32
かずくんさん返信ありがとうございます。
実は↓のページの下から2番目のロジック(はっちんさんのレス)を利用してプログラミングしていました。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28438&forum=7&6 その結果、xhtmlにすると @BODYにロードとスクロールのイベントを登録する。 <body onload="LoadEvent()" onscroll="ScrollEvent()"> のonscroll="ScrollEvent()が動かなくなってしまいます。 BODYのonloadはhtmlでは利用できるが、xhtmlでは利用できないのでしょうか? その場合、どうやって解決してやればいいのかが分かりません。 | ||||||||||||
|
投稿日時: 2006-10-23 17:11
ん?onscrollの間違い?onloadは使えるはずだけど。
IEはdtdの有無でも挙動が変わるので、dtd消してみるとか。
ってな感じで。 | ||||||||||||
|
投稿日時: 2006-10-23 17:40
こんにちは。
以下のサンプルをもとに、こんな感じのものを作りました。 http://www.openspc2.org/JavaScript/reference4/event/onScroll/index.html
このままであれば正しく「Scroll Event !!」と表示されます。 ただ、先頭の <?xml 〜 ?> を取り除くと、うまく動きません。 これはなにかと言うと、IE6 では DOCTYPE 宣言よりも前に文字列があると後 方互換モードに遷移するためです。 ちょっと古いですが参考文献。 http://www.remus.dti.ne.jp/~a-satomi/bunsyorou/Doctype-Switch_situation.html このことから導き出される結論は「IE6 は標準モードでは body に対する onscroll が有効にならない」だと言えるでしょう。たぶん。 じゃあどうするかというと、タイマで一定時間ごとにポーリングしてスクロール量を 検出するとか、あとはいさぎよくあきらめるとか(ひどい)、そういった感じになるの ではないでしょうか。 ちなみに「わざと後方互換モードにして回避する」という案もあるかもしれません が、オススメしません。というか、それだと何のために XHTML にするのかわか らなくなりそうな気がするので。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2006-10-23 21:30
こんな感じでどうでしょうか。
IEの場合、一回のスクロールでやたらscrollイベントが発生するので、 ScrollEvent の内容によっては window.setTimeout, window.clearTimeout を使って工夫するすると良いかもしれません。 | ||||||||||||
|
投稿日時: 2006-10-24 11:41
皆様色々とありがとうございました。
また返信が遅れて申し訳ありませんでした。 airさんの方法で解決することができました。 本当にありがとうございました。 |
1