Подтвердить что ты не робот

Открыть объект blobURL в Chrome

Я хочу открыть PDF файл на новой вкладке в браузере Chrome (Chrome 56.0.2924.87, Ubuntu 14.04), используя window.open(fileObjectURL) в javascript. Я создаю blob из кодированных данных base64 и создаю объектURL следующим образом:

const fileObjectURL = URL.createObjectURL(fileBlob); 

Он отлично работает в последнем браузере Firefox. Но в Chrome я вижу, что новая вкладка открывается, а затем закрывается немедленно. Поэтому я не вижу ошибок в консоли и т.д. Единственный способ, которым он теперь работает в Chrome, - предоставить данные base64 непосредственно функции window.open(fileBase64Data). Но мне не нравятся полные данные, заданные в URL-адресе.

Возможно, это проблема безопасности с блокировкой Chrome блокировки?

4b9b3361

Ответ 1

Причина, вероятно, в расширении adblock (у меня была точно такая же проблема).

Ответ 2

Вы должны открыть новое окно, прежде чем помещать URL-адрес BLOB-объекта в окно:

let newWindow = window.open('/')

Также вы можете использовать другую страницу, например /loading, с индикатором загрузки.

Затем вам нужно дождаться загрузки нового окна, и вы можете нажать URL вашего BLOB файла в этом окне:

newWindow.onload = () => {
    newWindow.location = URL.createObjectURL(blob);
};

Расширение Adblock не блокируйте его.

Я использую его с генераторами AJAX и ES, например:

let openPDF = openFile();
openPDF.next();
axios.get('/pdf', params).then(file => {
  openPDF.next(file);
});

function* openFile() {
  let newWindow = window.open('/pages/loading');
  // get file after .next(file)
  let file = yield;
  // AJAX query can finish before window loaded,
  // So we need to check document.readyState, else listen event
  if (newWindow.document.readyState === 'complete') {
    openFileHelper(newWindow, file);
  } else {
    newWindow.onload = () => {
      openFileHelper(newWindow, file);
    };
  }
}

function openFileHelper(newWindow, file) {
  let blob = new Blob([file._data], {type: '${file._data.type}'});
  newWindow.location = URL.createObjectURL(blob);
}

Ответ 3

селям

blob:http://***.***.***.**/392d72e4-4481-4843-b0d4-a753421c0433

BLOB-объекты не блокируются Chrome, но блокируются расширением AdBlock.

  • Пауза на этом сайте
  • Не бегайте по страницам на этом сайте
  • Или отключить или удалить расширение AdBlock

Don't run on pages on this site

Ответ 4

Обойти способ пройти adblocker.

Coffeescript и JQuery

$object = $("<object>")
$object.css
  position: 'fixed'
  top: 0
  left: 0
  bottom: 0
  right: 0
  width: '100%'
  height: '100%'
$object.attr 'type', 'application/pdf'
$object.attr 'data', fileObjectURL
new_window = window.open()
new_window.onload = ->
  $(new_window.document.body).append $object