简体   繁体   English

检测画布文本API支持(Opera Mini)

[英]Detecting canvas text API support (Opera Mini)

Although Opera Mini does not display canvas text, a typical test indicates that it has an implementation of the text API functions. 尽管Opera Mini不显示画布文本,但典型测试表明它具有文本API函数的实现。 Is there an alternative technique to check for support? 是否有替代技术来检查支持?

Current method: 当前方法:

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

An example you can use to see if text shown: tutorialspoint 您可以用来查看是否显示文本的示例: tutorialspoint

You can use a custom build of the Modernizr library to do that! 您可以使用Modernizr库的自定义版本来做到这一点!

http://modernizr.com/ http://modernizr.com/

As suggested by @kangax, you can test by drawing text to a canvas and then making sure that pixels have been drawn. 按照@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;
}

As I was using canvas to detect fonts, with errors thrown, a more compact alternative I found is: 当我使用canvas检测字体并引发错误时,我发现了一个更紧凑的替代方法是:

var canvasTextSupported = function() {
  var cvs = document.createElement("canvas");  
  var ctx = cvs.getContext("2d");
  return 'measureText' in ctx && ctx.measureText("") !== undefined;
}

Firefox 3.0.x doesn't have measureText . Firefox 3.0.x没有measureText And in Opera Mini measureText() returns undefined . 在Opera Mini中,measureText()返回undefined

您可以使用canisuse.js脚本检测您的浏览器是否支持canvas文本API。

caniuse.canvasTextApi();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM