【问题标题】:Window.open not working on jqueryWindow.open 不适用于 jquery
【发布时间】:2013-05-30 03:30:22
【问题描述】:

我正在调用下面的 jquery 方法将表格详细信息导出为 PDF。 PDF 文件是在 java 类中创建的,它被调用并在路径中可用 C:\apache-tomcat-7.0.40\webapps\TestProj\PDFfiles 以及我拥有此脚本的 JSP 位于 C:\apache-tomcat-7.0.40\webapps\TestProj\WEB-INF\jsp 但是 window.open 不起作用。我可以得到“PDF生成成功---”的提示信息

有什么想法吗?请帮忙。

function openPDF() {
        $.post("generatePDF", {action : "get"}, function(data) {
            if (data.returnStatus == "SUCCESS") {               
                alert("PDF generation success ---");
                var win = window.open('', 'fullscreen=no');
                win.location.href = '../../PDFfiles/TestPdf.pdf';
                win.focus(); 
                //window.open('../../PDFfiles/TestPdf.pdf', 'fullscreen=no');

            }
        }, 'json');     
    }

sn-p下面我也试过了,没用..

window.open('../../PDFfiles/ShopsListPdf.pdf', 'fullscreen=no');

【问题讨论】:

  • 你有阻止新窗口打开的弹出窗口吗?
  • 当您使用 URL“/TestProj/PDFfiles/ShopsListPdf.pdf”时会发生什么? “WEB-INF”目录比较特殊,不能这样用“..”导航。
  • 我在 jsfiddle 中用 Chrome 尝试了你的代码,它工作正常
  • popup-blocker 被移除了,仍然没有用..

标签: javascript jquery


【解决方案1】:

window.open 仅适用于click 等用户操作,但如果在此之后有延迟,它将被浏览器阻止。像您在ajax call 中所做的那样延迟。所以尝试在click之后尽快执行window.open

注意: 有时当由于缓存或其他原因导致 ajax 调用过快时,window.open 可能会工作,这经常发生在我身上,特别是当我尝试登录 Facebook 时这里是我发布问题时的链接fb login popup block

【讨论】:

  • 当我调用 generatePDF 时,该类实际上从会话中的数据生成 PDF 并将 PDF 放在 C:\apache-tomcat-7.0.40\webapps\TestProj\PDFfiles 所以就像我需要从文件夹中打开一个pdf文件。
  • 那么您只需将按钮设置为generate a pdf,完成后将按钮文本更改为download it,然后单击第二次即可用作window.open
  • 或者你可以打开一个带有页面的窗口,该页面有一个代码来在页面加载事件和显示时生成 pdf
猜你喜欢
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多