svg.node.getScreenCTM()在Firefox中不可用

svg.node.getScreenCTM()在Firefox中不可用,firefox,d3.js,svg,interop,Firefox,D3.js,Svg,Interop,以下是我的代码和生成错误的d3.js v5.4.0完整版本(未缩小)的代码: const onMouseMoveSvg = function() { const currentMouse = d3.mouse(svg.node()); //this line produces an error ... }; function mouse(node) { var event = sourceEvent(); if (event.changedTouches) e

以下是我的代码和生成错误的
d3.js v5.4.0
完整版本(未缩小)的代码:

const onMouseMoveSvg = function() {
      const currentMouse = d3.mouse(svg.node()); //this line produces an error
      ...
};


function mouse(node) {
  var event = sourceEvent();
  if (event.changedTouches) event = event.changedTouches[0];
  return point(node, event); //this line produces an error
}

function point(node, event) {
  var svg = node.ownerSVGElement || node;

  if (svg.createSVGPoint) {
    var point = svg.createSVGPoint();
    point.x = event.clientX, point.y = event.clientY;
    point = point.matrixTransform(node.getScreenCTM().inverse()); //this line produces an error
    return [point.x, point.y];
  }

  var rect = node.getBoundingClientRect();
  return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];
}
该代码在Chrome和Opera中运行良好。所以,我只是检查了有什么不同。与此不同的是,
node.getScreenCTM()
的结果。在Chrome和Opera中,我得到一个对象,而在Firefox中,它告诉我函数的结果不可用

铬:

火狐:

当我独自寻找问题的解决办法时,我发现了。那边说这个问题已经解决了,不应该再遇到了:

svg编辑现在已修复,因此我们可以(再次)将其标记为无效

但我们现在在这里,我仍然有这个问题。我正在使用FirefoxQuantum 61.0.1(64位)

那么,有人知道这个问题的解决方案吗

举个例子并不容易,因为问题出现在一个相对较大的项目中。但以下是重现问题的步骤:

  • 过去

  • 提供以下登录信息:

  • 用户名:yrslvtrfmv@resourceful-bear-239353.com

    密码:qwerty123456

  • 您将看到一个黄色矩形的页面,上面有一个文本:
  • 现在,将鼠标移到矩形上。在Chrome和Opera中不会出现问题,但在Firefox中会出现错误。错误将是由于
    getScreenCTM()
    不可用的结果造成的
  • 在这里,我将附上一些代码部分,这些代码部分证明了它背后的问题在于
    getScreenCTM()
    不可用的结果:


    var svg=node.ownerSVGElement | | node;看起来不对,但你需要提供一个真正的答案。@RobertLongson,我更新了问题。