是否有方法可以快速确定浏览器是否支持启用了cors的图像而不会污染浏览器?
Is there any way to quickly determine if a browser supports CORS-enabled images not tainting the browser?
是否有一个快速测试来确定浏览器是否支持启用cors的图像,当在其上绘制时不会污染画布。我知道Chrome 15支持这个功能,Firefox 9Beta不支持Firefox 8, Safari不支持,IE9也不支持。但必须有一个非常简单的测试来确定这个,基本上是在画布上画一个图像,看看当你试图获取图像数据时是否会出现异常,或者有没有其他简单的方法来确定这个。
这似乎可以工作:
if ('crossOrigin' in new Image())
// ...
下面是我如何测试CORS包含的画布支持。如果有人有办法不需要加载图片,请在这里发布:
function CanvasFunctions() {
var _initialized = false, _corsNotSupported = false;
function DrawImage(image, src) {
jQuery.when(initialized()).then(function () {
if (_corsNotSupported) {
image.src = GetProxyImage(src);
} else {
image.src = src;
}
}
}
function initialized() {
if (_initialized) {
return true;
}
var dfd = $.Deferred();
var src = 'http://example.com/corsImage.jpg',
image.onload = function () {
var canvas = document.createElement('canvas');
canvas.width = 250;
canvas.height = 250;
var ctx = canvas.getContext('2d');
ctx.drawImage(image, 0, 0, 200, 200);
try {
var hit = ctx.getImageData(0, 0, 1, 1).data[3] > 1;
console.log('Canvas was not tainted by CORS image, hit: ' + hit);
} catch (e) {
console.log('Canvas was tainted by CORS image, reverting to passthru for images');
_corsNotSupported = true;
}
_initialized = true;
dfd.resolve(true);
});
image.src = src;
return dfd.promise();
}
}
确定浏览器是否支持CORS的最简单方法是查找XHR的withCredentials属性。IE使用XDomainRequest对象而不是XHR,所以您也需要查找它:
function supportsCors() {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// Supports CORS
return true;
} else if (typeof XDomainRequest != "undefined") {
// IE
return true;
}
return false;
}
相关文章:
- jQuery检测浏览器是否支持Zoom
- 浏览器是否持久缓存脚本元素的编译版本
- 如何(功能)检测浏览器是否支持WebM alpha透明度
- 如何知道浏览器是否阻止插件
- 查看浏览器是否在React中更改了路线
- 角度2:检查用户的浏览器是否兼容
- 检查浏览器是否支持iFrame上的加载方法
- 检查浏览器是否支持 HTML 验证
- 如何检测浏览器是否正在加载
- 安卓股票浏览器是否支持WebSocket
- 检查浏览器是否已完成页面加载
- 浏览器是否在选项卡之间传播javascript变量
- 如何检测浏览器是否支持js-onscroll.立即
- 具有辅助功能的浏览器是否支持CSS或JavaScript
- 检测浏览器是否启用了 TLS
- 如何使用JavaScript /条件注释测试浏览器是否符合CSS3
- 大视频.js - 检查浏览器是否支持,背景图像回退
- 如何检测谷歌浏览器是否阻止Flash播放
- 如何检查浏览器是否支持带有javascript的svg
- 浏览器是否缓存下载的javascript