UNPKG

react-router

Version:

A complete routing library for React.js

50 lines (43 loc) 1.53 kB
export var canUseDOM = !!( (typeof window !== 'undefined' && window.document && window.document.createElement) ); export function getHashPath() { return decodeURI( // We can't use window.location.hash here because it's not // consistent across browsers - Firefox will pre-decode it! window.location.href.split('#')[1] || '' ); } export function replaceHashPath(path) { window.location.replace( window.location.pathname + window.location.search + '#' + path ); } export function getWindowPath() { return decodeURI( window.location.pathname + window.location.search ); } export function getWindowScrollPosition() { return { scrollX: window.pageXOffset || document.documentElement.scrollLeft, scrollY: window.pageYOffset || document.documentElement.scrollTop }; } export function setWindowScrollPosition(scrollX, scrollY) { window.scrollTo(scrollX, scrollY); } /** * taken from modernizr * https://github.com/Modernizr/Modernizr/blob/master/LICENSE * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586 */ export function supportsHistory() { var ua = navigator.userAgent; if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) { return false; } return window.history && 'pushState' in window.history; }