2013-02-09 5 views
0

내 SVG 하위에 JS 처리기를 추가하려고했습니다.SVG 요소에 onlick 이벤트 용 외부 처리기 추가

<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> 

을 그리고 확인하고있다 : 나는 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 

:

나는 다음과 같은 바인딩을 시도했다.

+0

이 svgs와의 js 파일이 동일한 도메인에서 제공되는 비는-대답 남아 있음을 보았다? http://en.wikipedia.org/wiki/Same_origin_policy – drinchev

+0

예를 확인하는 것이 좋습니다. 게다가, 지금은 웹 서버없이 파일을 실행하고 있습니다 (file : /// 링크 사용) –

+2

Chrome을 사용하고 계십니까? 다른 로컬 파일을 다른 도메인으로 취급합니다. 웹 서버 또는 다른 UA를 사용해야합니다. –

답변

1

@ 로버트 롱슨 (Lobert Longson)은 Chrome의 보안과 관련된 문제로 다른 로컬 파일을 다른 도메인으로 취급하고 있다고 말했습니다. 웹 서버를 사용하세요, Luk.

0

당신은 또한 (다른 도메인 이름에서 예를 들어, 스크립트를 실행하는 방법에 대한 crossdomain.xml에 파일에 대한 읽어 보시기 바랍니다, 각각의 자바 스크립트 파일의 시작 라인에서 document.domain = 'Your_domain_name'; 을 추가해야합니다 : statics.yourdomain.com을 포함하여 정적 CSS, JS, IMG 파일을)

PS : 죄송합니다 늦게 답장을, 내가 다른 뭔가를 찾고 및 귀하의 질문에

관련 문제