如果 ajax 响应包含 window.print,则它会循环
ajax response goes on loop if it includes window.print
我想在收到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 调用一样。我的代码有什么问题?如何打印页面?
我猜代码在全局范围内。
所有全局变量(全局函数,全局变量)实际上是全局对象的属性,我们在浏览器*上称之为window
。因此,通过使用名称 print
定义函数,您已经覆盖了通常的window.print
函数。因此,通过在函数中调用window.print
,您是在调用函数,而不是通常的window.print
。
只需将函数的名称更改为其他名称即可。
( * "我们在浏览器上称之为window
" 从技术上讲,window
是一个全局变量,因此它是全局对象上的一个属性,在浏览器上,它用来引用自身。
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 如何在下面的ES6循环中获得前面的文本
- 为什么“;未定义的“;在JavaScript中结束循环
- Javascript循环不会自我更新
- 如何使用jquery处理php循环通过元素
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组中的特定索引
- Javascript返回值只在循环中返回一次
- 按照选项卡索引的顺序循环一个jQuery选择
- 循环遍历以数组为值的Javascript对象
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 循环结束/推送到数组之前在页面上呈现EJS
- 循环比赛位置算法
- 将CSS应用于printWindow.print();在Javascript中
- jQuery循环在特定位置暂停
- 在window.print()中加载为循环指令而编译时准备DOM失败
- 如果 ajax 响应包含 window.print,则它会循环
- Firefox 在无限循环中挂起,并忽略 window.print() 上的 css