Обнаружение поддержки API текста в холсте (Opera Mini)

Хотя Opera Mini не отображает текст в холсте, типичный тест указывает на то, что он выполняет реализацию функций текстового API. Существует ли альтернативный метод проверки поддержки?

Текущий метод:

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

Пример, который вы можете использовать, чтобы увидеть, отображается ли текст: tutorialspoint

Ответ 1

Как было предложено @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;
}

Ответ 2

Вы можете использовать пользовательскую сборку библиотеки Modernizr для этого!

http://modernizr.com/

Ответ 3

Поскольку я использовал 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 не имеет measureText. А в Opera Mini measureText() возвращает undefined.

Ответ 4

Вы можете использовать canisuse.js script, чтобы определить, поддерживает ли ваш браузер API-интерфейс холста или нет

caniuse.canvasTextApi();