Javascript 如果ajax响应包含window.print,它将循环运行
我希望在收到ajax响应时打印屏幕。这是我的代码:Javascript 如果ajax响应包含window.print,它将循环运行,javascript,ajax,printing,xmlhttprequest,Javascript,Ajax,Printing,Xmlhttprequest,我希望在收到ajax响应时打印屏幕。这是我的代码: function print() { var request = new XMLHttpRequest(); request .open("GET", "printPage.html", true); var counter = 0; request.onload = function() { if (request.status >= 200 &
function print() {
var request = new XMLHttpRequest();
request .open("GET", "printPage.html", true);
var counter = 0;
request.onload = function() {
if (request.status >= 200 && request.status < 400){
console.log("success");
window.print();
} else {
// We reached our target server, but it returned an error
}
};
request.onerror = function() {
// There was a connection error of some sort
};
request.send();
}
函数打印(){
var request=new XMLHttpRequest();
打开(“GET”,“printPage.html”,true);
var计数器=0;
request.onload=函数(){
如果(request.status>=200&&request.status<400){
控制台日志(“成功”);
window.print();
}否则{
//我们到达了目标服务器,但它返回了一个错误
}
};
request.onerror=函数(){
//出现了某种连接错误
};
request.send();
}
但是我在响应上得到一个无限循环(我在控制台上多次看到“success”),这就像windows.print()再次调用相同的ajax调用一样。我的代码有什么问题?如何打印页面?我猜代码在全局范围内 所有全局变量(全局函数、全局变量)实际上都是全局对象的属性,我们在浏览器上称之为
window
。因此,通过使用名称print
定义函数,您已经覆盖了通常的窗口。print
函数。因此,在函数中调用window.print
,就是调用函数,而不是通常的window.print
只需将函数的名称更改为其他名称
(*“在浏览器上我们称之为
window
”,从技术上讲,window
是一个全局变量,因此它是全局对象上的一个属性,在浏览器上,它用来引用自身。)就是这样,谢谢