我试图将 JS 处理程序添加到我的一些 SVG 的孩子。我在 SVG 中使用以下代码:
<script type="text/javascript" id="script3079">
addClickEvents();
function addClickEvents() {
var keys = document.getElementsByTagName('path');
for (var i=0; i < keys.length; i++){
keys[i].addEventListener('click', keyClicked);
}
}
function keyClicked(e) {
var node = e.target;
alert(node.id);
}
</script>
它工作正常。但现在我想从外部 javascript 文件中调用函数:
//myfile.js
function keyClickedExternal(e) {
alert('keyClickedExternal');
}
当然,它是通过script
标签附加到我的 HTML 的。
我尝试了以下绑定:
keys[i].addEventListener('click', keyClickedExternal); //keyClickedExternal undefined
keys[i].addEventListener('click', parent.keyClickedExternal); //keyClickedExternal undefined
keys[i].addEventListener('click', top.keyClickedExternal); //keyClickedExternal undefined
keys[i].addEventListener('click', parent.keyClickedExternal); //keyClickedExternal undefined
我检查了 DOM:
parent.window.document //access violation
window.document //refers to SVG document
document //the same as previous
最后,我不明白如何将外部处理程序绑定到 SVG 子项。