문제

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 XML 파일이 다음과 같은 전체 URL (다른 사이트의)에 의해 참조되는 경우.

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

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

이 문제가 다른 DOM에 의해 야기되는지 확실하지 않으며 SVG 스크립트 코드가 다른 DOM의 객체 또는 요소를 파악할 수있는 방법이 없습니다. 해결책이 있으면 좋을 것입니다.

도움이 되었습니까?

해결책

실마리가 '다른 사이트에'있을 수 있다고 생각합니다. 다른 사이트의 JavaScript 프로그램이 Teach Other와 의사 소통 할 수있는시기에 대한 엄격한 규칙이 있습니다. 임베디드 SVG는 내부의 문서와 같은 방식으로 처리되고 있습니다. iframe 일 것이다.

다른 팁

따라서, 당신이하고있는 일은 브라우저의 관점에서 다음과 같습니다.

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

이것이 왜 이것이 바람직하지 않은지 이해할 것이라고 생각합니다. (그래도 오류 콘솔에 경고 나 예외가있을 것입니다.)

PDC는 이것을 맞습니다. 브라우저는 크로스 사이트 스크립팅 공격 (XSS)을 방지하기 위해 열심히 노력하며 결과입니다. 다른 도메인에서로드 된 문서에서 스크립트를 실행하거나 다른 포트 또는 프로토콜을 사용할 수 없습니다. 자세한 내용은 다음을 참조하십시오. http://en.wikipedia.org/wiki/same_origin_policy

내 경험에서; 코드는 사실이므로 정확히 실행됩니다. 내 PC Windows 7, IE9는 Adobe Viewer를 설치했습니다. SVG 뷰어 인 IE9 SVG가 그려졌지만 SVG 태그 애니메이션을 실행할 수는 없으면 JavaScript 애니메이션 만 실행할 수 있습니다. 따라서 Windows XP, IE8에서 Adobe SVG Viewer를 설치 한 동일한 결과 (정확히 실행).

Firefox SVG는 내 PC에서 정확히 실행할 수 없습니다 (SVG ecmascript 애니메이션).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top