호출 될 때 창을 열어야하지만, null
을 반환하는 함수를 개발했습니다. 원래의 JavaScript 함수에서 시작 창을 사용하면 작동합니다. 나는 원래 함수가 다른 함수에 컨트롤을 넘겨 준다고 가정하지만, 어떤 이유로이 함수가 작동하지 않는다.javascript open.window는 호출 된 함수에서 null을 반환합니다.
내 원래 함수는 기본적으로 새 JavaScript 파일을 호출하고 HTML 파일을로드하고 "준비"하면 이제는 문자열 형식의 HTML 파일로 window.open을 표시해야합니다.
order.prototype.printMe = function() {
order_resume.loadthis("myTestPage.html", "showData");
// OPENING WINDOW HERE WORKS; but the the html file that is loaded
// in above line hasn't finsihed loading - so i need to show it form
// the function below once in "ready" state
/* child1 = window.open ("about:blank","_blank");
child1.document.write(myDocument);
child1.document.close();
*/
}
그리고 여기가 원래의 함수에서 호출 내 기능입니다 :
function showResume() {
this.req = false;
reservaResumen.prototype.showData = function() {
if (this.req.readyState == 4) {
child1 = window.open("about:blank", "_blank"); /// THIS RETURNS NULL
child1.document.write("test");
child1.document.close();
}
}
reservaResumen.prototype.loadthis = function(url, myMethod) {
if (window.XMLHttpRequest && !(window.ActiveXObject)) {
try {
this.req = new XMLHttpRequest();
}
catch (e) {
this.req = false;
}
}
else if (window.ActiveXObject) {
try {
this.req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
this.req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
this.req = false;
}
}
}
if (this.req) {
var loader = this;
this.req.onreadystatechange = function() {
eval("loader." + myMethod + ".call(loader)")
}
this.req.open("GET", url, true);
this.req.send("");
}
}
팝업 차단기가 활성화되어 있습니까? – epascarello
아니요 - 원래 기능으로 열리기 때문에 ... –
팝업 차단기 설정을 다시 확인하십시오. 브라우저는 사용자 상호 작용없이 창을 열지 않습니다. 또한, 사용자가 예를 들면. 클릭 동작이지만, (Ajax 요청과 같은 비동기 작업을 수행하는 등으로) 오래 기다리면 브라우저는 창을 차단하고 window.open에 대해 null을 반환합니다. – Rafael