问题
Although Opera Mini does not display canvas text, a typical test indicates that it has an implementation of the text API functions. 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
回答1:
You can use a custom build of the Modernizr library to do that!
http://modernizr.com/
回答2:
As suggested by @kangax, you can test by drawing text to a canvas and then making sure that pixels have been drawn.
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;
}
回答3:
As I was using canvas
to detect fonts, with errors thrown, a more compact alternative I found is:
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
. And in Opera Mini measureText() returns undefined
.
回答4:
You can use canisuse.js script to detect if your browsers supports canvas text API or not
caniuse.canvasTextApi();
来源:https://stackoverflow.com/questions/12510482/detecting-canvas-text-api-support-opera-mini