检测帆布文本API支持(的Opera Mini)(Detecting canvas text API

2019-09-22 15:42发布

虽然Opera Mini的不显示画布文本,一个典型的测试表明,它的文本API函数的实现。 是否有其他技术来检查支持?

目前的方法:

var context = document.createElement("canvas").getContext("2d");
var canvasTextSupport = typeof context.fillText == "function"; // true in Opera Mini

你可以用它来查看是否显示文本的示例: tutorialspoint

Answer 1:

您可以使用的Modernizr库的自定义生成做到这一点!

http://modernizr.com/



Answer 2:

正如@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;
}


Answer 3:

由于我是用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



Answer 4:

您可以使用canisuse.js脚本来检测,如果你的浏览器支持画布文本API或不

caniuse.canvasTextApi();


文章来源: Detecting canvas text API support (Opera Mini)