我正在尝试使用一些新的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