D3事件显示' ReferenceError:事件未定义'在Firefox

时间:2018-01-12 13:19:17

标签: javascript firefox d3.js dom-events

我正在使用鼠标滚轮缩放我的d3 Map.Following Code am using。

.on("wheel.zoom", function() {
    var currScale = projection41039.scale();
    var newScale = currScale - 1 * event.deltaY;
    if (newScale >= 150) {
        var currTranslate = projection41039.translate();
        var coords = projection41039.invert([event.offsetX, event.offsetY]);
        projection41039.scale(newScale);
        var newPos = projection41039(coords);
        projection41039.translate([currTranslate[0] + (event.offsetX - newPos[0]),
            currTranslate[1] + (event.offsetY - newPos[1])
        ]);
        updateContents();
    }
})

这适用于Chrome,但在Firefox中引发错误:

  

ReferenceError:未定义事件

1 个答案:

答案 0 :(得分:3)

此处的问题是Chrome遵循Window.event的Internet Explorer功能,而Firefox则不会:

enter image description here

例如,给定一个按钮或任何其他元素,以下代码段将适用于Chrome,但不适用于Firefox:

d3.select("button").on("click", function() {
  console.log(event)
})

在这里试试:https://jsfiddle.net/b9h4ntn0/(我通常使用Stack Snippets,但该片段会在该特定示例中冻结)

<强>解决方案

使用d3.event。这样,您就不依赖于Window.event

d3.select("button").on("click", function() {
  console.log(d3.event)
})

以下代码适用于Chrome和Firefox:https://jsfiddle.net/qj787zmj/