0

SVGの子にJSハンドラーを追加しようとしています。SVG内で次のコードを使用しています:

  <script type="text/javascript" id="script3079">
    addClickEvents();

    function addClickEvents() {
        var keys = document.getElementsByTagName('path');
        for (var i=0; i &lt; 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子にバインドする方法がわかりません。

4

2 に答える 2

1

@Robert Longsonが言ったように、問題はChromeのセキュリティに関連しており、他のローカルファイルを別のドメインとして扱っています。WebサーバーのLukを使用します。

于 2013-02-10T12:06:07.890 に答える