Как выбрать между `window.URL.createObjectURL()` и `window.webkitURL.createObjectURL()` на основе браузера

С веб-сайта разработчика Firefox я знаю, что Firefox использует

objectURL = window.URL.createObjectURL(file);

чтобы получить url типа файла, но в хромовых и других браузерах webkit у нас есть window.webkitURL.createObjectURL() для обнаружения url.

Я не знаю, как заменить эти функции на основе браузеров, и мне нужно, чтобы они работали в обоих браузерах (Chrome и firefox).

https://developer.mozilla.org/en/DOM/window.URL.createObjectURL

Ответ 1

Вы можете определить функцию обертки:

function createObjectURL ( file ) {
    if ( window.webkitURL ) {
        return window.webkitURL.createObjectURL( file );
    } else if ( window.URL && window.URL.createObjectURL ) {
        return window.URL.createObjectURL( file );
    } else {
        return null;
    }
}

И затем:

// works cross-browser
var url = createObjectURL( file );

Ответ 2

Простой один вкладыш:

var createObjectURL = (window.URL || window.webkitURL || {}).createObjectURL || function(){};

Ответ 3

if (window.URL !== undefined) {
    window.URL.createObjectURL();
} else if (window.webkitURL !== undefined) {
    window.webkitURL.createObjectURL();
} else {
    console.log('Method Unavailable: createObjectURL');
}

Оборудовано тем, что вы ищете. Кроме того, В этом примере используется гораздо проще...

window.URL = window.URL || window.webkitURL;