2016-06-20 52 views
2

帮助我我迫切需要帮助。现在到真正的问题。在Safari中的新选项卡中打开PDF

我一直在试图让我的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); 
    

上我应该做的任何建议?我希望我的pdf在新标签中打开,而不是与我的应用程序相同。

P.S:我上面为Safari试用过的每个解决方案在Chrome和Mozilla Firefox中完美无缺地工作,但我无法弄清楚Safari是如何处理的。任何帮助,将不胜感激。

回答

0

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

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

仍然在同一Tab中打开PDF; _; – hkm93

+0

这很奇怪..如果您尝试打开任何其他网址,它是否仍然在同一个标​​签中打开?无论如何,也许使用第二个参数可能是解决方案:'window.open(URL.createObjectURL(blob),'_blank');' – demarchisd

+0

没有工作,不是粗鲁,但通过Apple的文档,发现我们的“标准window.open()JavaScript方法不能用于从全局HTML文件或扩展栏中打开新的选项卡和窗口”https://developer.apple.com/library/safari/documentation/Tools/Conceptual /SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html – hkm93