Обнаружение поддержки API текста холста (Opera Mini)
Хотя Opera Mini не отображает текст холста, типичный тест показывает, что в нем реализована функция текстового API. Есть ли альтернативная техника для проверки поддержки?
Текущий метод:
var context = document.createElement("canvas").getContext("2d");
var canvasTextSupport = typeof context.fillText == "function"; // true in Opera Mini
Пример, который вы можете использовать, чтобы увидеть, отображается ли текст: tutorialspoint
4 ответа
Как рекомендует @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;
}
Вы можете использовать пользовательскую сборку библиотеки Modernizr для этого!
Как я использовал 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
,
Вы можете использовать сценарий canisuse.js, чтобы определить, поддерживает ли ваш браузер API текста холста или нет
caniuse.canvasTextApi();