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位)
那么,有人知道这个问题的解决方案吗
举个例子并不容易,因为问题出现在一个相对较大的项目中。但以下是重现问题的步骤:
getScreenCTM()
不可用的结果造成的getScreenCTM()
不可用的结果:
var svg=node.ownerSVGElement | | node;看起来不对,但你需要提供一个真正的答案。@RobertLongson,我更新了问题。