gpt4 book ai didi

javascript - JS 打印问题

转载 作者:行者123 更新时间:2023-12-01 01:14:17 24 4
gpt4 key购买 nike

我有一个函数,它接受一些参数并将其转发给打印方法。

getPrintAction: function () {
return new Ext.Action({
scope : this,
handler : function () {
var printRenderer = new BaseRenderer;
var data = [...];

var printData = [...];
printRenderer.print(printData);
}
});
}

虽然这工作得很好,但当我添加 Ajax 请求时,整个事情就崩溃了。

getPrintAction: function () {
return new Ext.Action({
scope : this,
handler : function () {
var printRenderer = new BaseRenderer;
var data = [...];

Ext.Ajax.request({
scope : this,
params : {...},
success: function (result) {
var printData = [...];
printRenderer.print(printData);
},
failure: callback()
});
}
});
}

我尝试设置断点,因为我认为新的 printData 可能会导致错误。但事实并非如此,printData从回调中解析result,结果很好。我正在获取正确的数组以转发到 print() 方法。

最终失败了:

print: function (component) {

var win = window.open('','print');

win.document.write(component); <--- HERE
win.document.close();
}

如果我根据请求前往那里,则 win 变量设置为 null

我想这可能是一个范围问题,但我不知道如何调试它......

最佳答案

浏览器通常会阻止对 window.open 的异步调用。您将在地址栏右侧看到有关此阻止的通知。

enter image description here

这是为了防止垃圾邮件。您现在讨厌它,但相信我,您已经因此多次避免了垃圾邮件,所以不要讨厌它。

此类方法需要在点击事件发生时调用。如果您将来推迟对 window.open 的调用,尽管回调是在单击时创建的,但它会中断。

您可以做的是添加另一个弹出窗口,用户需要在 Ajax 请求之后单击该弹出窗口。例如显示“正在加载”弹出窗口,当加载结束时,该弹出窗口将更改为“单击此处打印”。

关于javascript - JS 打印问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54906409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com