弹出窗口上的PDF无法在Mac机器上工作



我试图使用以下代码在弹出窗口上打开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 ==未定义) 警报("请禁用您的弹出式阻滞剂");

最新更新