From f5bfa1418888b83a5a91389accfcafd2b98a3d75 Mon Sep 17 00:00:00 2001 From: Roman O Date: Thu, 1 Jun 2017 15:05:25 +0300 Subject: [PATCH] Add Edge support Can filter lower when Edge browser lowerThan: 'js:Promise', or lowerThan: 'Edge', --- outdatedbrowser/outdatedbrowser.js | 50 ++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/outdatedbrowser/outdatedbrowser.js b/outdatedbrowser/outdatedbrowser.js index 45db0d0..13b5ddd 100755 --- a/outdatedbrowser/outdatedbrowser.js +++ b/outdatedbrowser/outdatedbrowser.js @@ -19,7 +19,7 @@ var outdatedBrowser = function(options) { } if (options) { - //assign css3 property to IE browser version + //assign css3 property or js property to IE browser version if (options.lowerThan == 'IE8' || options.lowerThan == 'borderSpacing') { options.lowerThan = 'borderSpacing'; } else if (options.lowerThan == 'IE9' || options.lowerThan == 'boxShadow') { @@ -28,7 +28,10 @@ var outdatedBrowser = function(options) { options.lowerThan = 'transform'; } else if (options.lowerThan == 'IE11' || options.lowerThan == 'borderImage') { options.lowerThan = 'borderImage'; + } else if (options.lowerThan == 'Edge' || options.lowerThan == 'js:Promise') { + options.lowerThan = 'js:Promise'; } + //all properties this.defaultOpts.bgColor = options.bgColor; this.defaultOpts.color = options.color; @@ -99,22 +102,43 @@ var outdatedBrowser = function(options) { }; } )(); - //if browser does not supports css3 property (transform=default), if does > exit all this - if (!supports('' + cssProp + '')) { - if (done && outdated.style.opacity !== '1') { - done = false; - for (var i = 1; i <= 100; i++) { - setTimeout(( function(x) { - return function() { - function_fade_in(x); - }; - } )(i), i * 8); - } - } + var validBrowser = false; + + // browser check by js props + if(/^js:+/g.test(cssProp)) { + var jsProp = cssProp.split(':')[1]; + if(!jsProp) + return; + + switch (jsProp) { + case 'Promise': + validBrowser = window.Promise !== undefined && window.Promise !== null && Object.prototype.toString.call(window.Promise.resolve()) === '[object Promise]'; + break; + default: + validBrowser = false; + } } else { + // check by css3 property (transform=default) + validBrowser = supports('' + cssProp + ''); + } + + + if (!validBrowser) { + if (done && outdated.style.opacity !== '1') { + done = false; + for (var i = 1; i <= 100; i++) { + setTimeout((function (x) { + return function () { + function_fade_in(x); + }; + })(i), i * 8); + } + } + } else { return; } //end if + //Check AJAX Options: if languagePath == '' > use no Ajax way, html is needed inside
if (languagePath === ' ' || languagePath.length == 0) { startStylesAndEvents();