我正在尝试使用以下代码在弹出窗口中打开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机器测试时。它不起作用。
无论操作系统和浏览器如何,我如何在模式弹出窗口中打开pdf?
答案 0 :(得分:0)
Safari / Chrome内置弹出式窗口拦截器可阻止其工作。允许在Safari / Chrome中打开新窗口的唯一JavaScript是javascript直接附加到点击处理程序(和其他直接用户输入处理程序)。在过去的版本中,人们想出了一些欺骗的方法(比如生成一些其他元素 - 表格或div - 并使用javascript模拟用户输入),但更新的版本更聪明地检测到这一点。我建议您重新配置一些内容,这样就不会使用延迟弹出窗口 - 毕竟这种情况通常会对用户造成不良影响。
解决方法是
我通过检查window.open()的返回值来解决这个问题。如果这是真的,请调用alert(),并提供一条消息,供用户禁用其弹出窗口阻止程序。
var myWin = window.open([args]);
if(myWin == undefined) 提醒(&#39;请停用弹出窗口拦截器&#39;);