首页 > 解决方案 > 如何在 Safari 中使用 iframe 打开新标签页?

问题描述

我想在 , 中打开一个带有 PDF 的新iframe标签

pdfMake.createPdf(docDefinition).getDataUrl(function(outDoc) {
var win = window.open();

win.document.write('<iframe src="' + outDoc + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');    })

问题是以下代码在 chrome、Firefox、opera 中运行良好,但在 windows 上的 safari 中运行良好。

它给了我以下错误。

TypeError: 'undefined' is not an object (evaluating 'win.document')

我尝试先创建 iframe 元素,然后附加其文档,但这似乎也不起作用,我也尝试过,

document.location.href = win.document.write('<iframe src="' + imageData + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');

但这也无济于事。

谢谢你。

标签: javascriptsafari

解决方案


好的所以在阅读了其他一些堆栈溢出答案之后,我知道在 safari 中它不能在异步模式下工作,所以你需要window.open()在任何服务调用之前编写。

var win = window.open();

pdfMake.createPdf(docDefinition).getDataUrl(function(outDoc) {

win.document.write('<iframe src="' + outDoc + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');    })

推荐阅读