2012-06-22 4 views
0

iframe 객체를 버퍼로 사용하여 보안상의 이유로 동일한 도메인의 외부 페이지를로드하는 기본 페이지가 있다고 가정 해 보겠습니다. XMLHttpRequest가 모든 브라우저의 string external xhtml 컨텐트를 구문 분석 할 수 없기 때문에이 메서드를 선택했습니다.자바 스크립트를 사용하여 헤더에서 자바 스크립트 태그 제거

콘텐츠가 iframe에로드 된 후 "contentDocument"속성을 사용하여 콘텐츠를 훔친 다음 모든 CSS 스타일과 스크립트 태그를 상위 헤더에 추가하고 결국 iframe을 삭제합니다 (CSS 스크립트는 두 번째 문서에 인라인되어 있으므로 외부 링크가 전혀 없습니다.

이제 모든 것이 잘 작동합니다. 새로운 자바 스크립트 함수를 호출 할 수 있으며 CSS도 작동합니다.

내 질문은 : 새로 추가 된 CSS 스타일을 제거 할 수 있지만 자바 스크립트가 작동하지 않습니다. 동일한 문서 내에서 새로 추가 된 스크립트 태그를 제거하는 솔루션이 있습니까?

난 나는 당신이 무슨 뜻인지 이해 해안 있지 않다 (CSS는 ... 남아 자바 스크립트, 사라)

function emptyheader() 
    { 
     /* var container = document.getElementById("container"); */ 

     var header = document.getElementsByTagName('head')[0]; 

     /* styles = header.getElementsByTagName('style'); */ 
     /* scripts = header.getElementsByTagName('script'); */ 

      while(header.hasChildNodes()) 
      header.removeChild(header.firstChild);  
    } 
+0

오전 확실히 나는 그것이 무슨 짓을 취소 할 것 "제거"당신의 자바 스크립트가 실행되면 – shareef

+3

더 많은 검색하시기 바랍니다 흐름을 통해 스택 여기에 전에 같은 질문을 보았다. –

+0

나는 그 일을 원상태로 돌리고 싶지 않습니다. 일단 필요하지 않으면 헤더에서 스크립트 자식을 제거하고 싶습니다. –

답변

0

절망이를 시도했다. 그러나 여기에 스크립트를 추가하고 다시 작성하는 방법에 대한 예제가 있습니다 (본문에 스크립트 태그를 추가하는 것이 중요하다는 것을 알고있는 한).

<script> 
function addAndRemoveScript() { 
    var a = document.createElement("script"); 
    a.src = "yourscript.js"; 
    document.body.appendChild(a); 
    document.body.removeChild(document.body.getElementsByTagName("script")[0]) 
    document.body.removeChild(document.body.getElementsByTagName("script")[0]) 
} 
window.onload = addAndRemoveScript(); 
</script> 
+0

아니요, 스크립트는 외부 문서가 아니며 이미 언급 한 것처럼 두 번째 문서에서 인라인입니다. 나는 CSS/자바 스크립트가 내장 된 외부 문서를로드하고 싶지 않을 때 둘 다 제거 할 수 있기를 원한다. –

+0

이것은 HTML에서 스크립트 TAG를 추가하고 제거하는 방법의 예일뿐입니다. 힘든 자바 스크립트가 여전히 작동합니다 (DOM에 있기 때문에) 그리고 지금 이것이 당신의 문제라는 것을 알았습니다 ... 나는 그것에 대한 해결책을 가지고 있지 않습니다. – user1087110

+0

아이러니하지 않습니까? 귀하의 예제에 따라 예외 스크립트를 제거 할 수는 있지만 인라인 스크립트는 제거 할 수 없습니다. ( –