Div の長いページがあります。画像付きのものもあれば、テキスト付きのものもあります。ナビゲーション バーにScrollspyを接続しました。これは、Div のリストを下にスクロールすると強調表示されます。
画像が多いので、LazyLoadもインストールしています。
私が抱えている課題は、画像を含む Div では、遅延ロードが原因で scrollspy が Div の高さを適切に読み取らないように見えることです。これは、現在の div のスクロールが完了する前に、scrollspy が次の div のナビゲーションを強調表示することを意味します。
これが私が持っているコードの簡略化されたバージョンです:
<body>
<ul class="nav nav-list bs-docs-sidenav ">
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
</ul>
<div id="one">
text
text
text
</div>
<div id="two">
<p>
<img class="lazy" src="images/loading.gif" data-original="images/two.png" width="600" height="400" >
<noscript><img src="images/two.png" width="600" height="400" ></noscript>
</p>
<p>
<img class="lazy" src="images/loading.gif" data-original="images/two.png" width="600" height="400" >
<noscript><img src="images/two.png" width="600" height="400" ></noscript>
</p>
</div>
<div id="three">
text
text
text
</div>
<!-- bootstrap activations -->
<script type="text/javascript">
$('body').scrollspy()
</script>
<!-- lazy load -->
<script src="scripts/jquery.lazyload.min.js" type="text/javascript"></script>
<script type="text/javascript">
$("img.lazy").show().lazyload({
threshold : 100,
effect : "fadeIn",
});
</script>
</body>
...上記のコードでは、ユーザーがまだ画像を含む「2」をスクロールしている間に、ナビゲーションバーの「3」が強調表示されます。ScrollspyのDOMの「リフレッシュ」で何かをしなければならないかもしれないと思いますが、その方法や問題が解決するかどうかはあまり明確ではありません:
$('[data-spy="scroll"]').each(function () {
var $spy = $(this).scrollspy('refresh')
});
事前にご協力いただきありがとうございます。