我想在获得ajax响应时打印屏幕。这是我的代码:
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();
}
但是我在响应上得到一个无限循环(我在控制台上多次看到“成功”),就像windows.print()再次调用相同的ajax调用一样。我的代码有什么问题?我怎么打印页面?
答案 0 :(得分:2)
我猜这段代码在全球范围内。
所有全局变量(全局函数,全局变量)实际上是全局对象的属性,我们在浏览器*上调用window
。因此,通过使用名称print
定义函数,您已经覆盖了通常的window.print
函数。因此,通过在函数中调用window.print
,您调用的是函数,而不是通常的window.print
。
只需将您的功能名称更改为其他名称。
(*“我们在浏览器上调用window
”从技术上讲,window
是一个全局变量,因此它是全局对象上的一个属性,在浏览器上,它用于引用对自己。)