나는 팝업 윈도우의 DOM-trees와 그 개폐기가 조작하는 방법을 이해하기가 어렵다. 제가하려고하는 것을 구현하는 적절한 방법은 무엇입니까 (아래 설명 참조)?팝업 창의 내용을 AJAX 요청으로 바꾸는 방법은 무엇입니까?
JavaScript 함수가 선택된 요소를 모으고 거기에서 POST 데이터 문자열을 만드는 일반적인 브라우저 창 하나가 있습니다. 그런 다음 자리 표시 자 컨텐츠가있는 팝업 창을 열고 AJAX 요청을 수행하는 window.ready에 함수를 바인딩 한 다음 팝업 창에서 HTML을 AJAX 결과로 바꾸려고 시도합니다.
코드에서 이것은 오프너 창에서 실행되는 의 JavaScript에서 수행됩니다..
function showMessages(queryParams, width, height) {
var mailWindow = window.open('html/blankwithdoctype.html', 'foo', 'resizable=yes,scrollbars=yes,height='+height+',width='+width);
var params = queryParams.substring(1);
$(mailWindow.document).ready(function() {
doPostRequest(params, mailWindow);
});
return mailWindow;
}
function doPostRequest(queryParams, mailWindow) {
function callback(data, textStatus) {
var mv = mailWindow;
$(mv.document).find("html").html(data);
};
$.post('MailFile.do', queryParams, callback);
}
크롬 개발자 도구 나 파이어 폭스 + 지르고와
$(mv.document).find("html").html(data);
에서 깨고, 나는 일시적으로 결과가 표시되는 것을 알 수 있지만, JQuery와 콜 스택 (
$.post('MailFile.do', queryParams, callback);
후) 풀리는 후 원래 빈 페이지가 다시 한번 표시됩니다.
디버거가 없으면 결과 페이지의 렌더링이 최소한으로 시작되었지만 원래의 자리 표시 자 페이지로 빠르게 바뀌 었음을 알았습니다.
뭔가 재미있는 일이 벌어지고 있습니다.
jQuery 라이브러리를로드하지 않아도 문제가 발생하지 않습니다. 내 원래의 질문에 모든이 조작은 오프너 창에서 이루어집니다 그래서 열린 창에서 JQuery의 부족 문제가 안된다 설명하지 않았다. – Eonwe
나는 그것을 알고 있었다. 그러나 열린 윈도우의'ready()'에 전달하는 익명 함수는 내가 틀리지 않으면 열린 윈도우의 전역 컨텍스트에서 실행됩니다. 그것이 가시성 문제가 있다고 생각한 이유입니다. 실제로 해봤습니까?폐쇄로 인해 '$'가 표시 될 수 있지만, 나는 확실히 모른다. –