gpt4 book ai didi

javascript - 除非我设置断点,否则 Firefox 不会打印?

转载 作者:行者123 更新时间:2023-11-30 15:14:27 25 4
gpt4 key购买 nike

我有一个创建 iframe 的方法,将文本框的内容复制到该 iframe,打印 iframe,然后删除 iframe:

function CentralPrint(controlID)
{
var frameSet = document.createElement('iframe');

frameSet.name = "frameSet";
frameSet.id = "ErrorReportPrintingFrame";
frameSet.style.position = "absolute";
frameSet.style.top = "-1000000px";
document.body.appendChild(frameSet);

var frameDoc = frameSet.contentWindow ? frameSet.contentWindow : frameSet.contentDocument.document ? frameSet.contentDocument.document : frameSet.contentDocument;
frameDoc.document.open();

var content = document.getElementById(controlID).value.replace(/\n/gi, '<br>');

frameDoc.document.write('<html><head><title></title><table><tr><td>');
frameDoc.document.write(' <style type="text/css"> table tr td { font-family: Arial,Helvetica,sans-serif; } </style> </head><body>');
frameDoc.document.write(content);
frameDoc.document.write('</td> </tr> </table> </body></html>');

frameDoc.document.close();

var iframe = document.getElementById("ErrorReportPrintingFrame");
var result = iframe.contentWindow.document.execCommand("print", false, null);

if (!result)
{
iframe.contentWindow.print();
}

document.body.removeChild(frameSet);

return false;
}

这适用于 IE 11、Chrome,并且它适用于 Firefox 如果我设置断点并单步执行代码。

我认为这无关紧要,但当我使用 IE 和 Chrome 逐步执行此操作时,resulttrue,而在 Firefox 中,result code> 为 false

不过,除非我在 Firefox 中设置断点,否则我不会弹出选择打印设备的窗口。

知道是什么原因造成的吗?

最佳答案

我找到了一个解决方案,但为什么它解决了这个问题超出了我的理解:

function CentralPrint(controlID)
{
// New variable
var isFirefox = typeof InstallTrigger !== 'undefined';

var frameSet = document.createElement('iframe');

frameSet.name = "frameSet";
frameSet.id = "ErrorReportPrintingFrame";
frameSet.style.position = "absolute";
frameSet.style.top = "-1000000px";
document.body.appendChild(frameSet);

var frameDoc = frameSet.contentWindow ? frameSet.contentWindow : frameSet.contentDocument.document ? frameSet.contentDocument.document : frameSet.contentDocument;
frameDoc.document.open();

var content = document.getElementById(controlID).value.replace(/\n/gi, '<br>');

frameDoc.document.write('<html><head><title></title><table><tr><td>');
frameDoc.document.write(' <style type="text/css"> table tr td { font-family: Arial,Helvetica,sans-serif; } </style> </head><body>');
frameDoc.document.write(content);
frameDoc.document.write('</td> </tr> </table> </body></html>');

frameDoc.document.close();

// Use a timeout function instead of just issuing the command immediately
setTimeout(function ()
{
var iframe = document.getElementById("ErrorReportPrintingFrame");

if (isFirefox != true)
iframe.contentWindow.document.execCommand("print", false, null);
else
iframe.contentWindow.print();

document.body.removeChild(frameSet);
}, 500);

return false;
}

我想这一定是在打印命令执行它需要执行的操作之前删除元素的一些奇怪问题?

关于javascript - 除非我设置断点,否则 Firefox 不会打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44678755/

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