この質問は、この優れた StackOverflow 要素の可視性検出スクリプトに基づいています。
上記のスクリプトを使用すると、要素がページに表示されていることを (スクロールして) 適切に検出し、その後アラートをトリガーすることができます。上記のスクリプトとの違いは、要素が表示されるたびに 1 回だけアラートをトリガーするようにしたいということです。以下の jsFiddle コードでは、要素が表示されている間、マウスまたはスクロールバーをスクロールするたびにアラートがトリガーされ続けます。
http://jsfiddle.net/Berklie/JnFqu/
function isScrolledIntoView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
$(window).scroll(function () {
var myelement = $('#overdueWarning');
if (isScrolledIntoView(myelement)) {
alert('Your book is overdue');
}
});
私が望むのは、要素が表示されたときにアラートが1回だけトリガーされることです...そして、要素が非表示になった場合にのみ、再び表示されます。
他に何か提供できることがあれば教えてください。ありがとうございました!
バークリー