0

Specifically, I'd like to use this ResizeObserver Polyfill only when being browsed on Edge browsers. Is the ponyfill idea reference in the npm package the route I'd have to go? Sounds like I'd have to create my own ponyfill then? Or is there another way of thinking to approach this?

Brian Hernandez
  • 244
  • 1
  • 2
  • 14

1 Answers1

0

Sure, you can do that by detecting the browser.

First, you still need to install that package. Then, when the page is loaded successful, you can detect it:

// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0+ "[object HTMLElementConstructor]" 
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1 - 71
var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;


var output = 'Detecting browsers by ducktyping:<hr>';
output += 'isFirefox: ' + isFirefox + '<br>';
output += 'isChrome: ' + isChrome + '<br>';
output += 'isSafari: ' + isSafari + '<br>';
output += 'isOpera: ' + isOpera + '<br>';
output += 'isIE: ' + isIE + '<br>';
output += 'isEdge: ' + isEdge + '<br>';
output += 'isBlink: ' + isBlink + '<br>';
document.body.innerHTML = output;

When isEdge becomes true, you can load the module and use it.

Reference: How to detect Safari, Chrome, IE, Firefox and Opera browser?

Tân
  • 1
  • 15
  • 56
  • 102