Несогласованный вывод средства просмотра Документов Google

У меня есть эта проблема, которая позволяет пользователю просматривать файл PDF каждый раз, когда пользователь нажимает кнопку. При первом щелчке он выдает ошибку 'Access-Control-Allow-Origin' header is present on the requested resource. и ничего не отображает, но когда я попробую еще раз, он будет работать и сможет просматривать PDF-файл с помощью средства просмотра документов Google.

PDF-файл пришел по ссылке API и был размещен на storage.googleapis.com, который я не контролирую.

HTML:

<a href="{{document.document}}" class="btn-open-pdf"><i class="icon icon-eye"></i></a>

Фреймворк7/JQuery:

$(document).on('click', '.btn-open-pdf', function() {
   var url = "https://docs.google.com/viewer?url=" + $(this).attr('href');

       window.open(url, "_blank", "location=no,toolbar=no,hardwareback=yes");
});

Изменить: всплывающее окно не будет работать на мобильных устройствах, так как оно было включено.


person the_lorem_ipsum_guy    schedule 07.09.2017    source источник


Ответы (1)


Мне удалось решить проблему, добавив этот код из https://stackoverflow.com/a/27725432/1878924.

Добавлен плагин cordova-plugin-inappbrowser, который хорошо работает с устройствами. Вы можете ознакомиться с их документацией здесь.

Он обходит блокировщик всплывающих окон Chrome и хорошо работает с устройствами Android и iOS.

$(document).on('click', '.btn-open-pdf', function() {
   var uri = $(this).attr('href');
   var isMobile = {
      Android: function() {
         return /Android/i.test(navigator.userAgent);
      },
      iOS: function() {
         return /iPhone|iPad|iPod/i.test(navigator.userAgent);
      }
   };
   var pop = {
       openPopUp: function(urlToOpen) {
           var p = window.open(urlToOpen, "myWindow","toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes");            
           try {
              p.focus();   
           } catch (e) {
              alert("Pop-up Blocker is enabled! Please add this site to your exception list.");
           }
       }
   }

   // For Android/iOS platform
   if (isMobile.Android() || isMobile.iOS()) {
       try {
           cordova.InAppBrowser.open(uri, '_system');
       } catch(e) {
           window.open(uri, '_blank');
       }
   } else {
       pop.openPopUp($(this).attr('href'));
   }
});
person the_lorem_ipsum_guy    schedule 07.09.2017