getElementsByTagName을 사용하고 스크립트가 실행되기 전에 태그 사이의 텍스트를 수정할 수 있습니까? 예를 들어 초기 페이지에는 다음이 포함 된 경우 :<script> 태그 사이의 텍스트 수정
<script>alert("original text");</script>
는 것이 가능 DOM
document.getElementsByTagName('script')[0]
getElementsByTagName을 사용하고 스크립트가 실행되기 전에 태그 사이의 텍스트를 수정할 수 있습니까? 예를 들어 초기 페이지에는 다음이 포함 된 경우 :<script> 태그 사이의 텍스트 수정
<script>alert("original text");</script>
는 것이 가능 DOM
document.getElementsByTagName('script')[0]
호에 태그를 대상으로
<script>alert("modified text");</script>
로 변경하는 것입니다
defer
속성과 같은 특별한 경우가없는 경우 인라인 스크립트 <script>
태그는 구문 분석 된 직후에 실행됩니다. DOM에서 다른 스크립트가 스크립트를 볼 수있게되면 이미 실행되었습니다.
그게 내가 생각한 것입니다.하지만 확인 및/또는 가능한 해킹을 위해 커뮤니티에서 실행하고 싶었습니다. 빠른 응답을 보내 주셔서 감사합니다. –
아니요, 불가능합니다. 스크립트는 문서에로드되고 구문 분석되는 즉시 실행됩니다.
변경하려고하는 스크립트는 문서로 아직 구문 분석되지 않았거나 이미 실행 된 후에 찾을 수 없으므로 찾지 못할 수도 있습니다.
당신은 이것을 할 수 있지만, 당신이 뭘하고있는 것은 아닙니다.
먼저 스크립트에 저장하십시오. 헤더에 첫 번째를로드하십시오. 그런 다음 스크립트가 실행되면 다음 스크립트를 실행하십시오.
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>";
}
}
하지만 그 후에 만 변경됩니다.
솔직히 말해서 어쨌든 이것을하고 싶지 않은 이유가 있습니까? 왜 다른 전화 대신에 전화를 걸면 좋을까요?
왜 호출되는 함수를 수정할 수 있습니까? 이 경우 DOM을 조작하는 이유는 무엇입니까? 문자열로 변수를 설정하기 만하면됩니다. – Brad
물론,'window.alert'를 밟고''원래 텍스트 ''를 매개 변수로 가져 오면 원래의 경고를''수정 된 텍스트''로 호출하도록합니다. (당신이 깨닫지 못했다면 이것은 꽤 혀 인다.) – Marc
의견을 주셔서 감사합니다. –