2008-10-29 4 views
2

svg는 xml 기반 그래픽이며 자바 스크립트를 추가 할 수 있습니다. svg에 정의 된 스크립트 함수에 액세스하려고했습니다.svg의 스크립트에 대한 액세스

<svg ... onload="RunScript(evt);"...> 
<script type="text/javascript"> 
... 
function RunScript(loadEvent) { 
    // Get object in my html by id 
    var objElement = top.document.getElementById('objid1'); 
    if (objElement) 
    { 
    // Extend object tag object's methods 
    objElement.SVGsetDimension = setDimension; 
    ... 
    } 
    function setDimention(w, h) {...} 

내 주요 HTML 파일에서 SVG이 같은 객체 태그에 포함 :

<object id="objid1" data="mygrahic.svg" ... > 
<a href="#" onclick="document.getElementById('objid1').SVGsetDimention(10, 10); 
    return false;" 
...>Set new dimention</a>... 

이 하나의 작품을 잘 내 SVG의 스크립트는 다음과 같은 것입니다. SVG XML 파일은 다음과 같이 (다른 사이트) 전체 URL에 의해 참조하지만 경우 :

<object id="objid1" data="http://www.artlibrary.net/myaccount/mygrahic.svg" ... > 

코드는 더 이상 작동하지 않습니다. 그것은 내 기본 HTML 개체 태그 요소의 메서드를 내 svg 스크립트에서 정의 된 메서드를 연결할 수 없거나이 경우 또는 문서를 사용할 수 없습니다 또는 getElementById (..) 내 개체 요소를 찾을 수없는 것 같습니다. 내 SVG 스크립트. 내 html 요소를 찾기 위해 svg xml 스크립트에서 수행 할 수있는 방법이 있습니까?

이 문제가 다른 DOM에 의해 발생하고 내 svg 스크립트 코드가 다른 DOM의 개체 또는 요소를 파악할 방법이 없는지 확실하지 않습니다. 해결책이 있으면 좋을 것입니다.

+0

타겟팅하고 테스트하는 브라우저는 무엇입니까? 해당 브라우저에 SVG 지원 기능이 없으면 SVG 플러그인을 사용하고 있습니까? –

+0

Firefox 지금 사용하고 있습니다. 그것은 svg 그래픽을 잘 보여줍니다. 이것은 단지 스크립트 문제입니다. 나는 pdc에 의한 대답이 이유라고 생각한다. –

답변

4

실마리가 '다른 사이트'에 있다고 생각합니다. 다른 사이트의 자바 스크립트 프로그램이 다른 사용자와 통신 할 수있는시기에 대한 엄격한 규칙이 있습니다. 내장 된 SVG는 iframe 내부의 문서와 같은 방식으로 처리됩니다.

1

pdc이 하나의 권한이 있습니다. 브라우저는 XSS (Cross Site Scripting Attack)를 방지하기 위해 열심히 노력하며 그 결과입니다. 다른 도메인에서로드 된 문서 나 다른 포트 또는 프로토콜을 사용하여 스크립트를 실행할 수 없습니다. 더 많은 정보를 알 수 있습니다 : 해당 사용자가 브라우저의 관점에서, IS 무슨 일을하는지 그래서 http://en.wikipedia.org/wiki/Same_origin_policy

2

을, 다음에 :

<script> 
function stealPassword() { 
    var passwordInput = document.querySelector('input[type="password"]'); 
    var value = passwordInput.value; // My password! 
    sendPasswordToServerToStealMyMoney(value); 
} 
</script> 
<iframe src=mybank.com onload=stealPassword()></iframe> 

을 당신이 이유를 이해할 것 같아요 바람직하지 않다. (아마도 당신의 에러 콘솔에 경고 나 예외가있을 것입니다.)

0

내 experiense에서; 코드가 true이므로 정확하게 실행됩니다. 내 PC Windows 7, IE9, 설치된 Adobe Viewer. SVG 뷰어, IE9 SVG가 그리지 않았지만 SVG TAG 애니메이션을 실행할 수 없으면 만 자바 스크립트 애니메이션을 실행할 수 있습니다. 따라서 Windows XP, IE8에서 Adobe SVG Viewer를 설치 한 경우 동일한 결과 (정확하게 실행).

Firefox 내 PC에서 SVG를 실행할 수 없습니다 (SVG ecmascript animation).

관련 문제