3

ページの読み込み時に実行され、設定された時間間隔で自動的に実行される JavaScript 関数があります。この関数は、別のスクリプト (PHP によって生成された) で提供される画像を循環します。しかし、この関数が DOM を操作するたびに、ページは編集中の div を含む div の先頭にスクロールして戻ります。そして、私はそれを本当に避けたいです!

私はすでにstackOverflowや他のウェブサイトの他の投稿を見てきましたが、それらはすべてユーザーのアクション、通常はjQueryまたはAjaxとアンカー付きのリンクに関係しています. この状況では、そのどれも当てはまりません。

私のHTMLのアイデアを提供するには:

<div id="the_rest_of_my_page">
  <div id="scrolls_to_the top_of_this">
    <div id="img_div">
      This is where my JavaScript is doing stuff
    </div>
  </div>
</div>

私のJavaScriptコード:

function advance_slideshow( )
{
    document.getElementById( img_div ).innerHTML = '<img src="' + img_array[index] + '">';
    index = (index+1) % img_array.length;
    setTimeout('advance_slideshow()', swap_delay);
}

ページは数秒ごとに自動的に上にスクロールし、ページの下部には重要なコンテンツがたくさんあるため、問題は非常に深刻です。

このスクロールを防ぐ方法を知っている人はいますか?

編集: もう一度試してみると、ページは div の上部ではなく、DOM の編集後にページの上部にスクロールします。それは私が推測するより理にかなっていますが、実際にはさらに悪いです!

4

1 に答える 1

2

コメントで私が言ったことは、あなたの問題の原因のようです:あなたの高さがimg設定されておらず、親divにはどちらheightもありませんmin-height.

では、どうなるでしょうか?画像を置き換えると、 div に実際の画像がないマイクロ秒が数秒あります。古い画像は破棄され、新しい画像が読み込まれます。

親divの画像なし=高さ0。ページ全体が短くなり、スクロールが一番上にジャンプします。

可能な解決策:min-heightCSSのdivで、または画像の寸法と設定widthを計算し、heightそれらを追加するとき。

于 2012-05-02T17:16:32.777 に答える