내 SVG 하위에 JS 처리기를 추가하려고했습니다.SVG 요소에 onlick 이벤트 용 외부 처리기 추가
<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>
을 그리고 확인하고있다 : 나는 SVG 안에 다음 코드를 사용. 하지만 지금은 외부에서 함수를 호출 할 자바 스크립트 파일 :이 script
태그를 통해 내 HTML에 부착 물론
//myfile.js
function keyClickedExternal(e) {
alert('keyClickedExternal');
}
. 마지막으로, 나는 SVG 아이 외부 핸들러를 바인딩하는 방법을 이해하지
parent.window.document //access violation
window.document //refers to SVG document
document //the same as previous
: 나는 DOM을 확인
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
:
나는 다음과 같은 바인딩을 시도했다.
이 svgs와의 js 파일이 동일한 도메인에서 제공되는 비는-대답 남아 있음을 보았다? http://en.wikipedia.org/wiki/Same_origin_policy – drinchev
예를 확인하는 것이 좋습니다. 게다가, 지금은 웹 서버없이 파일을 실행하고 있습니다 (file : /// 링크 사용) –
Chrome을 사용하고 계십니까? 다른 로컬 파일을 다른 도메인으로 취급합니다. 웹 서버 또는 다른 UA를 사용해야합니다. –