다른 사람들은 웹 페이지가 완전히로드되기 전에 DOM 객체에 액세스하려고했기 때문에 비슷한 오류가 발생했습니다. 나는 다른 것을하고 있지만 타이밍 문제가있을 수도 있습니다.'innerHTML'속성의 값을 설정할 수 없습니다 : 타이밍 문제가 있습니까?
양식 및 iframe이있는 CGI 스크립트와 통신하는 Javascript 응용 프로그램이 있습니다. 사용자가 제출 버튼을 처음 클릭하면 JS 응용 프로그램이 보이지 않는 iframe을 만들어 양식 데이터를 서버로 보냅니다. 서버는 JS 애플리케이션이 읽고 해석하는 iframe에 데이터를 보내 응답해야한다.
var iframe = document.createElement("iframe");
iframe.name = "myIframe";
document.body.appendChild(iframe);
var iframeDocument = 'contentDocument' in iframe? iframe.contentDocument : iframe.contentWindow.document;
iframeDocument.body.innerHTML = "";
전체 에러는 : 오류 : 속성 'innerHTML을'의 값을 설정할 수 없음 : 여기
코드의 매우 단순화 된 버전 인 객체가 null 불확정전부인 오래 전에로드 된 페이지 - 위 코드가 실행될 때 사용자가 일부 데이터를 입력하고 제출 버튼을 누릅니다. 그러나 iframe은 새로운 것입니다.
내 컴퓨터에서 코드가 제대로 작동합니다. 문제를 재현 할 수 없습니다. 사용자 에이전트는 'Mozilla/5.0 (MSIE 9.0, Windows NT 6.1, Trident/5.0)'이라는 서버의 로그 파일에서 확인할 수 있습니다.
아마도 순진하게 생각했지만 iframe이 만들어져 문서의 innerHTML 속성을 설정할 수 있다고 생각했습니다. 이것이 타이밍 문제 일 수 있습니까? innerHTML을 설정하기 전에 기다려야합니까, 아니면 잘못되어 가고 있습니까?
실제로 타이밍 문제로 인해 오류가 발생하는 경우 페이지를 처음로드 할 때 iframe을 만들어 문제를 해결할 수 있습니다. 사용자가 취소 버튼을 클릭하면 iframe이 사용되지 않습니다. 필요할 때만 iframe을 만드는 것이 더 좋습니다. 이 오류를 실제로 수정하려면 이해해야합니다. 이것이 바로 내 질문입니다.
[이 답변]의 코드 (HTTP 준비가 될 것이라는 점을 확실 할 것이다 그런 식 : // 유래를 .com/questions/24603580/i-access-the-dom-elements-within-iframe/24603642 # 24603642)는 iframe이 "준비"상태 일 때 알려줍니다. – jfriend00
'iframe'의'src' 속성이 아무것도 설정되어 있지 않습니까? 또한, 저는 궁금 해서요. AJAX 같은 것을 사용하는 것과는 대조적으로 서버 응답을 얻기 위해이 방법을 사용하는 이점이 있습니까? 아니면 학습 목적을위한 예제입니까? – pete
피트, 내가 만든 iframe의 src 특성을 설정하지 않았습니다. 나는 서버에 불필요한 요청을 보내고 싶지 않다. Ajax에 관해서는 조금 읽었지만 사용하지 않았습니다. 유효한 비교를 할 수 없습니다. –