在Safari

时间:2016-06-20 12:07:42

标签: javascript pdf safari jspdf

帮助我,我迫切需要帮助。现在到了真正的问题。

我一直试图让我的pdf在Safari的新标签中打开,但到现在为止我只是面临失望。我正在使用jsPDF生成我的PDF,之前我使用它的

doc.save(pdfName+".pdf")

做同样的方法,就像最新的safari版本“9.1.1(10601.6.17)”一样。我仍然可以使用jsPDF的内置选项生成pdf:

pdf.output('dataurl');

但是,它倾向于在同一个标​​签中打开PDF,这种行为是非常不受欢迎的。我尝试了网上提供的各种解决方案来解决问题,但都没有。我尝试过的一些解决方案是:

  1. 使用window.open()不起作用。
  2. 使用location.href不起作用。
  3. 使用doc.output('save','filename.pdf'),doc.output('datauri'),doc.output('dataurlnewwindow'),没有任何作用。
  4. 还尝试通过创建锚标记并将其目标设置为“_blank”进行虚假点击,然后使用eventDispatcher刺激鼠标单击,但它也无效。像这样:

    var a = window.document.createElement("a");
    a.target = '_blank';
    a.href = 'http://www.google.com';
    
    var e = window.document.createEvent("MouseEvents");
    e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    a.dispatchEvent(e);
    
  5. 有关我应该做什么的任何建议?我希望我的pdf在新标签中打开,而不是与我的应用程序相同。

    P.S:我在Safari上面尝试过的每个解决方案都在Chrome和Mozilla Firefox中完美运行,我无法弄清楚与Safari的交易是什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试blob输出。然后为此生成一个数据URI,并在新窗口中打开它:

var blob = pdf.output("blob");
window.open(URL.createObjectURL(blob));