javascript - Canvas 在 IoS 移动设备上无法正常工作

标签 javascript html css

这里有人遇到过这种问题吗?出于某种原因,canvas arc() 在 Iphone 上不起作用,但在 Android 上运行良好。是否存在浏览器支持问题,或者我只是遗漏了什么?

    width = Math.max(elem.offsetParent.offsetWidth),
    height = Math.max(elem.offsetParent.clientHeight);
var body = document.body, html = document.documentElement,
    docWidth = Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth),
    docHeight = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);


var ct = document.getElementById("cv");
var ctx = ct.getContext('2d');   
ct.width = docWidth; 
ct.height = docHeight;

//ctx.fillStyle = "rgba(0, 0, 0, 0.8)";
ctx.fillStyle = "rgba(234, 70, 195 , 0.7)";
ctx.beginPath();
ctx.arc(width - elem.offsetWidth - 5, docHeight - height + elem.offsetTop + 25, 50, 0, 2 * Math.PI);
ctx.rect(width, 0,-docWidth, docHeight);
ctx.fill();
ctx.stroke();```

最佳答案

因为 document.documentElement 不被 Safari IOS 完全支持。 您可以在浏览器兼容性上查看 https://developer.mozilla.org/en-US/docs/Web/API/Document/documentElement . 我建议检查 width-elem.offsetWidth - 5, docHeight - height + elem.offsetTop ,以确保这些变量都可用。

你是指下面的效果吗?

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

ctx.beginPath();
ctx.fillStyle = "rgba(234, 70, 195 , 0.7)";
ctx.rect(0, 0,100, 100);
ctx.fill();
ctx.stroke();
ctx.beginPath();
ctx.fillStyle = "white";
ctx.arc(50,50, 40, 0, 2 * Math.PI);
ctx.fill();
ctx.stroke();
<canvas id="canvas" width="150" height="150"></canvas>

关于javascript - Canvas 在 IoS 移动设备上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55017247/

相关文章:

javascript - 这是一种在 JavaScript 中通过引用传递的迂回方式吗?

html - 有人知道为什么这段代码不适用于 firefox?

html - 为什么我可以在此代码中选中多个单选按钮

javascript - 单击时获取插入符号在文本区域中的位置

CSS:文本阴影 buggy ?

css - 处理韩文断词

javascript - 将页面标题设为粗体

javascript - 类型错误 : Cannot call method 'toLowerCase' of undefined

css - FF 在刷新时以不同方式加载 CSS

javascript - Bootstrap Table Filterby ,按日期范围过滤,不显示任何内容