2013-07-08 1 views
0

getElementsByTagName을 사용하고 스크립트가 실행되기 전에 태그 사이의 텍스트를 수정할 수 있습니까? 예를 들어 초기 페이지에는 다음이 포함 된 경우 :<script> 태그 사이의 텍스트 수정

<script>alert("original text");</script> 

는 것이 가능 DOM

document.getElementsByTagName('script')[0] 
+1

왜 호출되는 함수를 수정할 수 있습니까? 이 경우 DOM을 조작하는 이유는 무엇입니까? 문자열로 변수를 설정하기 만하면됩니다. – Brad

+0

물론,'window.alert'를 밟고''원래 텍스트 ''를 매개 변수로 가져 오면 원래의 경고를''수정 된 텍스트''로 호출하도록합니다. (당신이 깨닫지 못했다면 이것은 꽤 혀 인다.) – Marc

+0

의견을 주셔서 감사합니다. –

답변

1

호에 태그를 대상으로

<script>alert("modified text");</script> 

로 변경하는 것입니다

defer 속성과 같은 특별한 경우가없는 경우 인라인 스크립트 <script> 태그는 구문 분석 된 직후에 실행됩니다. DOM에서 다른 스크립트가 스크립트를 볼 수있게되면 이미 실행되었습니다.

+0

그게 내가 생각한 것입니다.하지만 확인 및/또는 가능한 해킹을 위해 커뮤니티에서 실행하고 싶었습니다. 빠른 응답을 보내 주셔서 감사합니다. –

1

아니요, 불가능합니다. 스크립트는 문서에로드되고 구문 분석되는 즉시 실행됩니다.

변경하려고하는 스크립트는 문서로 아직 구문 분석되지 않았거나 이미 실행 된 후에 찾을 수 없으므로 찾지 못할 수도 있습니다.

0

당신은 이것을 할 수 있지만, 당신이 뭘하고있는 것은 아닙니다.

먼저 스크립트에 저장하십시오. 헤더에 첫 번째를로드하십시오. 그런 다음 스크립트가 실행되면 다음 스크립트를 실행하십시오.

var scripts = document.getElementsByTagName ("script"); 
var l = scripts.length; 
for (var i = 0; i < l; ++ i) 
{ 
    if (scripts [i].src = "myfile.js") 
    { 
     scripts [i].parentNode.innerHTML = "<script>alert('modified text');</script>"; 
    } 
} 

하지만 그 후에 만 ​​변경됩니다.

솔직히 말해서 어쨌든 이것을하고 싶지 않은 이유가 있습니까? 왜 다른 전화 대신에 전화를 걸면 좋을까요?

관련 문제