window.open createObjectURL

时间:2017-03-20 15:50:42

标签: javascript google-chrome window.open

我正在尝试使用一些新的API并且遇到了这个问题。

当我尝试使用createObjectURL打开window.open生成的URI时,它什么也没做。但它适用于location.assign

我在网上找不到任何可以理解这种行为的资源。

它似乎只会影响Chrome。

以下是代码:

const DATA = [
  '<!DOCTYPE html>',
  '<html>',
    '<head>',
      '<meta charset="utf-8">',
      '<title>Hoy!</title>',
    '</head>',
    '<body>',
      '<h1>Hoy!</h1>',
    '</body>',
  '</html>'
].join('');

const TEXT_ENCODER = new TextEncoder();
const ARRAY_BUFFER = TEXT_ENCODER.encode(DATA);

const BLOB = new Blob([ARRAY_BUFFER], {
  type: 'text/html'
});

const DATA_URI = window.URL.createObjectURL(BLOB);

document.querySelector('#button').addEventListener('click', function createPage() {
  // doesn't work, don't know why
  window.open(DATA_URI, '_blank', '');

  // works fine
  // location.assign(DATA_URI);
});

这是一个JSFiddle:jsfiddle.net/gibatronic/f97cpweh

0 个答案:

没有答案