繁体   English   中英

HTML 5 Canvas addHitRegion在iOS上不起作用(未定义不是函数)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM