Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 画布上的绘图点不适用于safari_Javascript_Html_Canvas_Safari - Fatal编程技术网

Javascript 画布上的绘图点不适用于safari

Javascript 画布上的绘图点不适用于safari,javascript,html,canvas,safari,Javascript,Html,Canvas,Safari,我想用canvas在mouseover上画点:我的实现在chrome和firefox上运行良好,但由于某些原因,它在safari上不起作用(然而,在mouseover上画一条线在safari上起作用) 任何帮助都将不胜感激 ---> 代码: 根据法律规定,Safari是这样做的 从路径中删除所有零长度 从路径中删除任何不包含线的子路径(即只有一个点的子路径) 在追踪之前 您的路径完全由这些零长度线段组成(moveTo(x,y);lineTo(x,y)),因此没有留下任何要绘制的内容 其他浏览器在

我想用canvas在mouseover上画点:我的实现在chrome和firefox上运行良好,但由于某些原因,它在safari上不起作用(然而,在mouseover上画一条线在safari上起作用)

任何帮助都将不胜感激

--->

代码:

根据法律规定,Safari是这样做的

  • 从路径中删除所有零长度
  • 从路径中删除任何不包含线的子路径(即只有一个点的子路径)
  • 在追踪之前

    您的路径完全由这些零长度线段组成(
    moveTo(x,y);lineTo(x,y)
    ),因此没有留下任何要绘制的内容

    其他浏览器在这里有缺陷:

    要做您想做的事情,即画一个圆,请使用
    arc()
    方法。另外,不要忘记调用
    beginPath()
    ,否则您的路径将不断增长,最终会在同一个位置反复移动,从而导致糟糕的图形和性能

    const canvas=document.querySelector(“canvas”);
    设x=0;
    设y=0;
    常数半径=7.5;
    const context=canvas.getContext(“2d”);
    context.strokeStyle=“黑色”;
    canvas.addEventListener(“mousemove”,函数(e){
    x=e.offsetX;
    y=e.offsetY;
    context.beginPath();
    移动到(x+半径,y);
    弧(x,y,半径,0,数学PI*2);
    context.fill();
    });
    
    let canvas = document.querySelector("canvas");
    
    let x = 0;
    let y = 0;
    
    
    let context = canvas.getContext("2d");
    context.strokeStyle = "black";
    context.lineWidth = 15;
    context.lineCap = "round";
    
    canvas.addEventListener("mousemove", function(e) {
      
        x = e.offsetX;
        y = e.offsetY;
    
      context.moveTo(x, y);
       context.lineTo(x, y);
        context.stroke();
    });