-
-
Save bendc/d7f3dbc83d0f65ca0433caf90378cd95 to your computer and use it in GitHub Desktop.
var supportsES6 = function() { | |
try { | |
new Function("(a = 0) => a"); | |
return true; | |
} | |
catch (err) { | |
return false; | |
} | |
}(); |
I think this requires some performance testing since you can't benefit from browsers "parse ahead" behaviour to download the JS file as soon as possible.
The ~
is pretty critical here, unless we know that for every browser, the last part of ES6 to be supported was either arrows or default args?
@rik optimising for the modern browsers, you could <link rel=preload>
it
@triblondon Yup, the critical test is the a = 0
(all browsers supporting default parameters have a fairly complete support of ES6 -- for example, Edge 13 will be rejected by this test despite a decent ES6 coverage).
<html>
<head>
<script>
if (typeof Symbol === 'undefined') {
document.write('<script crossorigin="anonymous" src="https://polyfill.io/v3/polyfill.min.js?features=es6,es7&flags=gated"><\/script>')
}
</script>
</head>
<body>
</body>
</html>
@triblondon Yup, the critical test is the
a = 0
(all browsers supporting default parameters have a fairly complete support of ES6 -- for example, Edge 13 will be rejected by this test despite a decent ES6 coverage).
I wanna know how to prove “all browsers supporting default parameters have a fairly complete support of ES6”
Thankfully, if you can show links or refs
Load your untranspiled ES6 file for modern browsers: