ページのスクロールを取得するためのプロパティがいくつかあり、ブラウザごとに異なります。正しいスクロールを受け取るために私が書いた関数は次のとおりです。
関数 getScroll(型)
{
タイプ = タイプ || '上';
var 結果 = 0;
var スクロール = 0;
if (type === 'トップ')
{
if (ISQ.Http.browser.app !== 'ie' || ISQ.Http.browser.isIE9)
scroll = window.pageYOffset;
if (ISQ.Http.browser.app !== 'ie')
scroll = returnMaxScroll(scroll, window.scrollY);
scroll = returnMaxScroll(scroll, document.body.scrollTop);
scroll = returnMaxScroll(scroll, document.documentElement.scrollTop);
scroll = returnMaxScroll(scroll, document.body.parentNode.scrollTop);
}
そうでなければ (タイプ === '左')
{
if (ISQ.Http.browser.app !== 'ie' || ISQ.Http.browser.isIE9)
scroll = window.pageXOffset;
if (ISQ.Http.browser.app !== 'ie')
scroll = returnMaxScroll(scroll, window.scrollX);
scroll = returnMaxScroll(scroll, document.body.scrollLeft);
scroll = returnMaxScroll(scroll, document.documentElement.scrollLeft);
scroll = returnMaxScroll(scroll, document.body.parentNode.scrollLeft);
}
else if (type === '高さ')
{
スイッチ (ISQ.Http.browser.app)
{
ケース "クローム":
ケース "ff":
ケース「オペラ」:
ケース「サファリ」:
// iframe
if (window.top === ウィンドウ)
scroll = document.documentElement.scrollHeight;
// ウインドウ上部
そうしないと
scroll = document.body.scrollHeight;
壊す;
デフォルト:
scroll = returnMaxScroll(scroll, document.body.scrollHeight);
scroll = returnMaxScroll(scroll, document.documentElement.scrollHeight);
scroll = returnMaxScroll(scroll, document.body.parentNode.scrollHeight);
壊す;
}
}
else if (type === '幅')
{
scroll = returnMaxScroll(scroll, document.body.scrollWidth);
scroll = returnMaxScroll(scroll, document.documentElement.scrollWidth);
scroll = returnMaxScroll(scroll, document.body.parentNode.scrollWidth);
}
スクロールを返します。
}
関数 returnMaxScroll(value1, value2)
{
if (value1 > value2) return value1;
戻り値2;
}
参考までに: これらのブール値を実装する必要があるかもしれません:
- ISQ.Http.browser.app !== 'すなわち'
- ISQ.Http.browser.isIE9
お役に立てば幸いです:)