2012-09-06 2 views
0

SVG 태그 안에 스크립트 태그를 중첩 시키려고하지만 SVG가 Safari에 비어 있습니다.HTML에 직접 삽입 된 SVG 태그에 스크립트 태그가 중첩되어있어 SVG가 비어 있습니다.

다음 바이올린은 FF 15.0, Chrome 21.0 및 IE9에서는 작동하지만 Windows의 Safari 5에서는 작동하지 않습니다.

http://jsfiddle.net/5rnbU/4/

<svg height="320" width="320" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> 
    <script > 
    setTimeout("run()",1000); 

    function run(){ 
     var e = document.getElementById("rect"); 
     console.log(e); 
     setTimeout("run()",1000); 
    } 
    </script> 
    <rect id="rect" ry="6" rx="6" fill="silver" height="320" width="320" y="0" x="0"/> 
</svg> 

SVG

은 HTML에 직접 포함됩니다. 스크립트 태그가 제거되면이 방법이 작동하며 SVG를 검사하면 스크립트 태그가 다음 SVG 요소를 둘러싸고 있음을 알 수 있습니다. 왜? 몇 가지 해결 방법은 무엇입니까?

+1

아마도 사파리에는 script 요소의 attribute로 type = "text/javascript"가 필요합니다. –

+0

나는 그것을 시도했다. 여전히 비어 있습니다. –

+0

'svg' 태그에'xmlns'가 표시되어 SVG 네임 스페이스에서'script'를 찾고 찾을 수 없습니까? 'script'가 SVG 네임 스페이스에 존재하는지 확실하지 않습니다. 어쨌든'svg' 요소 밖에서 스크립트를 움직이면 작동합니까? –

답변

0

JSFiddle은 자바 스크립트 패널에서 자바 스크립트 코드를 작성해야합니다. HTML 패널에 자바 스크립트 코드를 작성하면 JSFiddle은 올바르게 실행할 수 없습니다.

올바른 방법은 다음과 같습니다 HTML 패널에서

http://jsfiddle.net/5rnbU/7/

쓰기 HTML :

setTimeout("run()",1000); 

function run(){ 
    var e = document.getElementById("rect"); 
    console.log(e); 
    setTimeout("run()",1000); 
} 

그들에게 쓰지 마십시오 모든 :

<svg height="320" width="320" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> 
    <rect id="rect" ry="6" rx="6" fill="silver" height="320" width="320" y="0" x="0"/> 
</svg> 

자바 스크립트 패널에서 자바 스크립트를 쓰기 html 패널.

+0

SVG 자체에 중첩 된 스크립트를 얻으려고합니다. 아마도 사파리는 스크립트가 거기에 있다는 것을 좋아하지 않을 것이고 나는 그것과 함께 살아야만합니다. –

관련 문제