[英]HTML 5 Canvas addHitRegion not working on iOS (undefined is not a function)
我正在构建一个可点击的画布,上面覆盖着我网站的图像。 在桌面上,一切正常。 我正在遍历一组坐标并绘制各种可单击的形状。 但是,在iOS上,我的循环绘制了第一个形状,然后显然在此代码段的最后一行遇到了错误,我尝试在该行中为该区域指定ID。 当它达到这一点时,它将停止绘图。
var canvas = document.getElementById('coveringCanvas');
var context = canvas.getContext('2d');
if (mapData.paths.length > 0) {
for (var x = 0; x < mapData.paths.length; x++) {
context.beginPath();
var points = mapData.paths[x];
for (var i = 0; i < points.length; i++) {
var point = points[i];
if (i == 0) {
context.moveTo(point.x * multiplier, point.y * multiplier);
} else {
context.lineTo(point.x * multiplier, point.y * multiplier)
}
}
context.closePath();
context.lineWidth = 1;
context.strokeStyle = 'blue';
context.stroke();
context.addHitRegion({ id: x });
}
}
一切都可以在桌面上正常工作。 iOS不支持此功能吗?如果不支持,是否有解决方法? 我找不到任何文档。 抛出的错误是
未定义不是函数
这似乎表明addHitRegion在iOS中不可用。 有什么方法可以在iOS中获取这些形状的点击事件吗?
编辑以将函数添加到将click事件添加到画布的位置。
function drawMap() {
var canvas = document.getElementById('coveringCanvas');
canvas.addEventListener("click", function (event) {
if (event.region) {
alert('You clicked parcel ' + event.region);
}
}, false);
}
当前,在移动设备上对addHitRegion()
的支持非常addHitRegion()
。 根据MDN的信息 ,在撰写本文时,这些设备是唯一支持它的设备(免责声明:不确定MDN是否完全是最新的; caniuse.com不报告有关此方法的任何信息):
这种情况在台式机上要好一些,但要好得多(在Chrome和Firefox中,必须通过标志启用它):
在撰写本文时,我还不知道任何已知的解决方法(polyfill;由于与事件系统集成,因此很难编写)。 您必须使用费力的手动方法来进行边界检查和/或isPointInPath()
( isPointInStroke()
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.