SVGの子にJSハンドラーを追加しようとしています。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>
そして、それはうまく機能しています。しかし今、私はEXTERNALjavascriptファイルから関数を呼び出したいと思います:
//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子にバインドする方法がわかりません。