Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据浏览器在`window.URL.createObjectURL()`和`window.webkitURL.createObjectURL()`之间进行选择_Javascript_Html_Dom - Fatal编程技术网

Javascript 如何根据浏览器在`window.URL.createObjectURL()`和`window.webkitURL.createObjectURL()`之间进行选择

Javascript 如何根据浏览器在`window.URL.createObjectURL()`和`window.webkitURL.createObjectURL()`之间进行选择,javascript,html,dom,Javascript,Html,Dom,从Firefox开发者网站上,我知道Firefox使用 objectURL = window.URL.createObjectURL(file); 要获取文件类型的url,但在chrome和其他webkit浏览器中,我们有window.webkitURL.createObjectURL()用于检测url 我不知道如何基于浏览器引擎交换这些功能,我需要它在两种浏览器(Chrome和firefox)上都能工作 就在你要找的东西周围。此外,示例使用了更简单的 window.URL = window

从Firefox开发者网站上,我知道Firefox使用

objectURL = window.URL.createObjectURL(file);
要获取文件类型的url,但在chrome和其他webkit浏览器中,我们有
window.webkitURL.createObjectURL()
用于检测url

我不知道如何基于浏览器引擎交换这些功能,我需要它在两种浏览器(Chrome和firefox)上都能工作

就在你要找的东西周围。此外,示例使用了更简单的

window.URL = window.URL || window.webkitURL;
简单一行:

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

您可以定义一个包装函数:

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 );

如果浏览器中不存在
createObjectURL
方法,则变量将是
undefined
,尝试调用它将抛出错误。@ŠimeVidas这是正确的,但不是问题的一部分。它现在以一种不会为每个额外调用带来任何开销的方式进行了修复。我认为这不再是必要的,因为当我在代码中使用它时,Chrome返回“webkitURL”已被弃用。请改用“URL”。控制台中的消息。
// works cross-browser
var url = createObjectURL( file );