Javascript 如何根据浏览器在`window.URL.createObjectURL()`和`window.webkitURL.createObjectURL()`之间进行选择
从Firefox开发者网站上,我知道Firefox使用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
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 );