mirror of
https://github.com/Modernizr/Modernizr.git
synced 2026-01-08 23:27:59 -05:00
Add detection for support of scrollToOptions mode of window.scrollTo() (#2575)
This commit is contained in:
34
feature-detects/scrolltooptions.js
Normal file
34
feature-detects/scrolltooptions.js
Normal file
@@ -0,0 +1,34 @@
|
||||
/*!
|
||||
{
|
||||
"name": "scrollToOptions dictionary",
|
||||
"property": "scrolltooptions",
|
||||
"caniuse": "mdn-api_scrolltooptions",
|
||||
"notes": [{
|
||||
"name": "MDN docs",
|
||||
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo"
|
||||
}],
|
||||
"authors": ["Oliver Tušla (@asmarcz)", "Chris Smith (@chris13524)"]
|
||||
}
|
||||
!*/
|
||||
define(['Modernizr', 'createElement', 'getBody'], function (Modernizr, createElement, getBody) {
|
||||
Modernizr.addTest('scrolltooptions', function () {
|
||||
var body = getBody();
|
||||
var returnTo = window.pageYOffset;
|
||||
var needsFill = body.clientHeight <= window.innerHeight;
|
||||
if (needsFill) {
|
||||
var div = createElement('div');
|
||||
div.style.height = (window.innerHeight - body.clientHeight + 1) + 'px';
|
||||
div.style.display = 'block';
|
||||
body.appendChild(div);
|
||||
}
|
||||
window.scrollTo({
|
||||
top: 1
|
||||
});
|
||||
var result = window.pageYOffset !== 0;
|
||||
if (needsFill) {
|
||||
body.removeChild(div);
|
||||
}
|
||||
window.scrollTo(0, returnTo);
|
||||
return result;
|
||||
});
|
||||
});
|
||||
@@ -268,6 +268,7 @@
|
||||
"requestanimationframe",
|
||||
"script/async",
|
||||
"script/defer",
|
||||
"scrolltooptions",
|
||||
"serviceworker",
|
||||
"speech/speech-recognition",
|
||||
"speech/speech-synthesis",
|
||||
|
||||
Reference in New Issue
Block a user