簡體   English   中英

彈出窗口上的PDF在Mac機器上不起作用

[英]PDF on popup not working on mac machine

我正在嘗試使用以下代碼在彈出窗口中打開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?

Safari / Chrome瀏覽器具有內置的彈出窗口阻止程序,無法正常運行。 唯一允許在Safari / Chrome中打開新窗口的javascript是直接附加到點擊處理程序(和其他直接用戶輸入處理程序)的javascript。 在過去的版本中,人們想出了一些作弊的方法(例如生成其他元素-表單或div-並使用javascript模擬用戶輸入),但是較新的版本在檢測時更聰明。 我建議您重新配置內容,以免您使用延遲的彈出窗口-畢竟這通常會給用戶帶來不適。

解決方法是

我通過檢查window.open()的返回值是否未定義來解決此問題。 如果是這樣,請調用alert()並向用戶提供一條消息,以禁用其彈出窗口阻止程序。

var myWin = window.open([args]);

如果(myWin == undefined)alert('請禁用您的彈出窗口阻止程序');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM