我试图使用以下代码在弹出窗口上打开PDF
$(document).on("click", ".btnOpenWindowpaid", function () {
var fileName = $(this).attr("data-path");
var fileNameIndex = fileName.lastIndexOf("/") + 1;
var OnlyFileName = fileName.substr(fileNameIndex);
var iframe = '<object type="application/pdf" data="' + fileName + '" width="100%" height="420">No Support</object>'
$.createModal({
title: OnlyFileName,
message: iframe,
closeButton: true,
scrollable: false
});
});
(function (a) {
a.createModal = function (b) {
defaults = { title: "", message: "Your Message Goes Here!", closeButton: true, scrollable: false };
var b = a.extend({}, defaults, b); var c = (b.scrollable === true) ? 'style="max-height: 420px;overflow-y: auto;"' : "";
html = '<div class="modal fade" id="myModal">'; html += '<div class="modal-dialog">'; html += '<div class="modal-content">';
html += '<div class="modal-header">'; html += '<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>';
if (b.title.length > 0) { html += '<h4 class="modal-title">' + b.title + "</h4>" } html += "</div>";
html += '<div class="modal-body" ' + c + ">"; html += b.message; html += "</div>"; html += '<div class="modal-footer">';
if (b.closeButton === true) { html += '<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>' } html += "</div>";
html += "</div>"; html += "</div>"; html += "</div>"; a("body").prepend(html); a("#myModal").modal().on("hidden.bs.modal",
function () { a(this).remove() })
}
})(jQuery);
此代码在Windows机器浏览器上完美地在模态弹出窗口上打开PDF。当我用Mac机器测试时。它不起作用。
如何在模态POP中打开PDF,无论操作系统和浏览器如何?
Safari/Chrome具有内置的弹出式阻滞剂,可以阻止此操作。唯一允许打开Safari/Chrome新窗口的JavaScript是直接连接到单击处理程序(以及其他直接用户输入处理程序)的JavaScript。在过去的版本中,人们发现了一些作弊的方法(例如生成其他元素 - 表单或div-并使用JavaScript模拟用户输入),但是对于检测到这一点,更新版本更聪明。我建议您重新配置事物,以免使用延迟的弹出窗口 - 毕竟这通常会给用户震惊。
工作将是
我通过检查未定义的window.open()的返回值来解决这个问题。如果是True Call Alert(),则带有一条消息,供用户禁用其弹出阻滞剂。
var mywin = window.open([args]);
if(mywin ==未定义) 警报("请禁用您的弹出式阻滞剂");