我試圖將JS處理程序添加到某些SVG的子項中。我在SVG中使用以下代碼:將onlick事件的外部處理程序添加到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孩子。
是你的svgs和js文件來自同一個域提供?你可能想檢查http://en.wikipedia.org/wiki/Same_origin_policy – drinchev 2013-02-09 09:26:17
是的。此外,現在我運行它沒有任何網絡服務器,就像我的電腦中的文件(使用file:///鏈接) – 2013-02-09 09:30:39
你在Chrome上的權利?它將不同的本地文件視爲不同的域。您需要使用網絡服務器或不同的UA。 – 2013-02-09 09:32:56