Javascript 在打开使用保存的html的报表之前在服务器端保存html不会';我不在野生动物园工作

Javascript 在打开使用保存的html的报表之前在服务器端保存html不会';我不在野生动物园工作,javascript,c#,jquery,cross-browser,dom-events,Javascript,C#,Jquery,Cross Browser,Dom Events,我提出了一种Javascript,它可以在屏幕上截取报表所需的html,并使用ajax调用将其保存在服务器上,然后通过弹出窗口调用使用以前保存的html的报表。 以下是代码: function SaveAndPrintHtml(htmlToPrint) { try { $.ajax({ type: 'POST', async: true, url: 'temp.aspx?Action=Sa

我提出了一种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上的Safari之外,这种方法在MAC和PC上测试的所有浏览器上都能正常工作

知道为什么吗

编辑:

当浏览器首次加载(或卸载)页面时,尝试打开弹出窗口的JavaScript代码将失败


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

弹出窗口拦截器很可能正在阻止您的
窗口。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();
}
函数SaveAndPrintHtml(htmlToPrint){
变量$form=$('');
$form.attr('target','u blank');
$form.attr('action','temp.aspx?action=SaveHtmlToPrint');
$form.append($(“”).val(htmlToPrint);
//抓取表单DOM对象并提交-它应在新窗口中打开:
$form[0]。提交();
}
这应该将包含正确数据的表单发布到正确的url,并打开一个新窗口进行发布。
然后你让你的
temp.aspx
将重定向标题传递到
print.aspx

不幸的是,这段代码对我不起作用,我无法在ff或safari上发布即时创建的表单,但感谢你的努力