我正在尝试一些新的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
发布于 2022-05-25 10:29:05
这在Chrome中是随机的,显然取决于文件的内容。与小邮编工作良好,与大邮编,不下载任何东西。
使用location.assign解决了这个问题
注意:将“设置-安全性”设置为最低级别并不能解决问题。
https://stackoverflow.com/questions/42908128
复制相似问题