虽然Opera Mini的不显示画布文本,一个典型的测试表明,它的文本API函数的实现。 是否有其他技术来检查支持?
目前的方法:
var context = document.createElement("canvas").getContext("2d");
var canvasTextSupport = typeof context.fillText == "function"; // true in Opera Mini
你可以用它来查看是否显示文本的示例: tutorialspoint
您可以使用的Modernizr库的自定义生成做到这一点!
http://modernizr.com/
正如@kangax建议,您可以通过绘制文本到画布上,然后确保像素已经制定测试。
var canvasTextSupported = function() {
var canvas = document.createElement("canvas");
var context = canvas.getContext("2d");
context.fillText("X", 5, 5);
var imageData = context.getImageData(0, 0, 10, 10);
for(var i = 0, l = imageData.data.length; i < l; i++) {
if(imageData.data[i] !== 0)
return true;
}
return false;
}
由于我是用canvas
检测字体,与引发的错误,更紧凑的替代方案,我发现是:
var canvasTextSupported = function() {
var cvs = document.createElement("canvas");
var ctx = cvs.getContext("2d");
return 'measureText' in ctx && ctx.measureText("") !== undefined;
}
火狐3.0.x中没有measureText
。 而在Opera Mini的measureText()返回undefined
。
您可以使用canisuse.js脚本来检测,如果你的浏览器支持画布文本API或不
caniuse.canvasTextApi();