diff --git a/feature-detects/scrolltooptions.js b/feature-detects/scrolltooptions.js new file mode 100644 index 00000000..20afb508 --- /dev/null +++ b/feature-detects/scrolltooptions.js @@ -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; + }); +}); diff --git a/lib/config-all.json b/lib/config-all.json index 29096355..80508c47 100644 --- a/lib/config-all.json +++ b/lib/config-all.json @@ -268,6 +268,7 @@ "requestanimationframe", "script/async", "script/defer", + "scrolltooptions", "serviceworker", "speech/speech-recognition", "speech/speech-synthesis",