我在站点中开发了一个优惠券生成器模块,我创建了一个 html 格式的优惠券,并使用 JavaScript 函数在画布中填充该 html 值
function checkcanvas(id) {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var data = "<svg xmlns='http://www.w3.org/2000/svg' width='437' height='262'>"
+ "<foreignObject width='100%' height='100%'>"
+ "<div xmlns='http://www.w3.org/1999/xhtml' style='font-size:40px'>"
+ $("#coupon_td").html()
+ "</div>"
+ "</foreignObject>"
+ "</svg>";
var DOMURL = self.URL || self.webkitURL || self;
var img = new Image();
var svg = new Blob([data], {type: "image/svg+xml;charset=utf-8"});
var url = DOMURL.createObjectURL(svg);
img.onload = function() {
ctx.drawImage(img, 0, 0);
DOMURL.revokeObjectURL(url);
};
img.src = url;
if(id == 2) {
document.getElementById('base_64_img').value = canvas.toDataURL();
}
}
base_64_img
只是一个隐藏元素,因此我可以将数据发布到我的 php 代码中并使用 base64 代码创建图像。
我面临的最大问题是,这段代码几乎可以在 Mozilla Firefox 的每个版本中完美运行,但不能在 Google chrome 中运行。