0
DOMContentLoaded
문서가로드되고 스크립트가 실행 된 후 실행되고 스크립트가 실행되기 전에 코드를 실행하고 싶지만 이후에 document.body.outerHTML
(document.childNodes[document.childNodes.length-1].outerHTML
) 가득 javascript 이벤트 : 문서가 텍스트로 완전히로드되었지만 스크립트가 아직 실행되지 않은 경우 가져 오기
나는 이것을 시도하지만, 여러 번 후 나는 200ms의 작업 mycode을 실행하기 전에 타이머를 할 이제도 발견 실행처럼 보이지만 내가 타이머없이 그것을 할 싶습니다
var observer = new MutationObserver(function(mutations)
{
if(document.body && document.childNodes[document.childNodes.length-1].outerHTML.lastIndexOf("</html>")!=-1)
{
observer.disconnect();
mycode();
}
});
observer.observe(document, {subtree: true, childList: true});
Chrome에서 작업해야 함 (여기서 beforescriptexecuted 이벤트는 작동하지 않음)
그래서 위에 게시 된 내 메소드 (코드)를 고수해야합니까? (쓰레기와 코드 위의 코드가 거의 즉시 열리는 페이지 이후 10 초 이내에 DOMContentLoaded가 실행될 수 있습니다.) – Owyn
@Owyn : 사용중인 스크립트가 요청한 것을 수행하지 않기 때문에 아니오. 'html' 요소는 전체 문서가로드되기 전에 끝 태그를 가지며, 시작 태그에서 끝 태그를 가져옵니다. 요소는 시작과 끝 태그에 대한 별도의 객체가 아닌 단일 객체이므로 요소에 대해 OuterHTML을 얻으면 항상 끝 태그가 생깁니다. DOMContentLoaded 이벤트가 나중에 발생하는 이유는 현재 코드가 너무 이른. 또한 문서가 생성 될 때부터 문서가 업데이트 될 때마다 여러 번 실행되는 이유이기도합니다. – Guffa
정상적인 상황에서 나는 단지 몇 ms의 settimeout을 사용해야하고 firefox + noscript 사용자 (settimeout은 작동하지 않는다)에 모든 mutation을 실행시킨 채로두고 (문서에 충분한 내용이 있는지 확인) 제거하지만 제거해야한다.