gpt4 book ai didi

javascript - 在打开使用保存的 html 的报告之前在服务器端保存 html 在 Safari 上不起作用

转载 作者:行者123 更新时间:2023-11-28 10:34:27 24 4
gpt4 key购买 nike

我想出了一种Javascript,它可以屏幕抓取报告所需的html,并使用ajax调用将其保存在服务器上,之后我通过弹出窗口调用使用以前保存的html的报告。这是代码:

   function SaveAndPrintHtml(htmlToPrint) {
try {
$.ajax({
type: 'POST',
async: true,
url: 'temp.aspx?Action=SaveHtmlToPrint', //SAVE DATA TO PRINT
data: {
htmlToPrint: encodeFormData(htmlToPrint)
},
dataType: "json",
success: function() {
try {
var url = 'report.aspx';
window.open(url, '_blank'); //OPEN REPORT
} catch (e) {
}
},
error: handleError
});
} catch (ex) {
alert('Unexpected Error!; \n\r ' + ex.message);
}

想法是,当用户单击打印按钮从客户端获取 html 时,将其发送到服务器保存它,并在成功保存后在弹出窗口中打开使用先前保存的 html 的报告。此方法适用于在 MAC 和 PC 上测试的所有浏览器(MAC 上的 Safari 除外)。

知道为什么会这样吗?

编辑:

JavaScript code that tries to open a pop-up window when the browser first loads (or unloads) a page will fail.

考虑到上述陈述,Safari 可能会将 ajax 请求后打开弹出窗口的尝试视为初始加载/卸载页面阶段,因此禁止它?

最佳答案

很可能,弹出窗口阻止程序正在阻止您的 window.open()

你可能会更幸运地做这样的事情:

function SaveAndPrintHtml(htmlToPrint) {
var $form = $('<form method="post" />');
$form.attr('target', '_blank');
$form.attr('action', 'temp.aspx?Action=SaveHtmlToPrint');
$form.append($("<input type='hidden'/>").val(htmlToPrint);
// grab the form DOM object and submit it - it should open in a new window:
$form[0].submit();
}

这应该将包含正确数据的表单发布到正确的 URL,并打开一个新窗口来执行此操作。然后,让您的 temp.aspx 将重定向 header 传递给 print.aspx

关于javascript - 在打开使用保存的 html 的报告之前在服务器端保存 html 在 Safari 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2016520/

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