注意:我找到了这个问题的答案 here。问题是 解决了;无需更多答案!
我正在做一个具有以下结构的项目:
root
|
|____js
| |__index.js
|
|__node_modules
| |__d3-*
|
|
|__index.html
|__package.json
index.html:
<head>
<script src="https://unpkg.com/getlibs"></script>
</head>
<body>
<div id="detail"></div>
</div>
<!--script type="module" src="./js/index.js"></script> Also tried this method -->
<script>
System.import('./js/index.js');
</script>
</body>
index.js:
import {select} from "d3-selection";
import {event as currentEvent} from "d3-selection";
let svg = select('#detail')
.append('svg')
.attr('width', 500)
.attr('height', 500);
svg.on('click', function() {
console.log(window.event);
console.log(currentEvent);
});
输出为:
MouseEvent {isTrusted: true, screenX: 266, screenY: 247, clientX: 266, clientY: 175, …}
null
如果我通过脚本标记全局使用d3,则通过window.d3
在模块内部引用d3,那么d3.event
会正确捕获鼠标事件。我想创建一个模块化项目,并避免使用全局d3对象。
那是可以实现的,如果可以的话,如何实现?