javascript - 如何在 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>');
但这也无济于事。
谢谢你。
解决方案
好的所以在阅读了其他一些堆栈溢出答案之后,我知道在 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>'); })
推荐阅读
- sql - 在 Azure SQL 数据库中使用“INSERT INTO”SQL 查询时出错
- r - 需要用 R 中的新列转置特定数量的数据行
- python - 如何管理 tkinter Treeview 中列的大小?
- vue.js - vue 的 kendo-dropdownlist,如何设置默认值
- mysql - UPDATE 表 Replace() 子字符串返回行但 0 已更改
- google-chrome - https://clients2.google.com/service/update2/crx 不再工作了吗?
- swift - 不明白制作缓存时需要什么
- build - Bazel cc_toolchain 用于非 gnu TI DSP 编译器
- javascript - 像我 5 岁一样解释我 - ES6 Promises & async/await 差异,我的代码“正确”吗?
- clojure - 如何查找 Datascript 中的多基数属性是否包含元素?