如何在新选项卡中将字符串作为 HTML 内容打开?
How to open a string as a HTML content in a new tab?
public openNewTab(blob: Blob | string) {
const data = 'data:text/plain;charset=utf-8,' + encodeURIComponent(blob);
window.open(data, '_blank');
setTimeout(() => window.URL.revokeObjectURL(data), 100);
}
我正在尝试将 blob 文件(在此示例中为字符串)作为 HTML 内容打开到新选项卡中。这个函数工作正常,但它打开一个纯文本内容,标签就像“<html><head><title>....
”一样写成文本。我想显示 HTML 内容。我试图将数据定义为 text/html 但它不起作用。如果不使用任何库,我该怎么做?
我也试过像这样使用锚标签;
const anchorElement = document.createElement('a');
document.body.appendChild(anchorElement);
anchorElement.setAttribute('href', data);
anchorElement.setAttribute('target', '_blank');
anchorElement.click();
与window.open()的结果相同。
您可以使用 window 文档的写入功能实现它,如下所示:
public openNewTab(blob: Blob | string) {
const data = 'data:text/plain;charset=utf-8,' + encodeURIComponent(blob);
var myWindow = window.open("", '_blank');
myWindow.document.write(data);
setTimeout(() => window.URL.revokeObjectURL(data), 100);
}
您可以在 https://www.w3schools.com/jsref/met_win_open.asp 找到更多详细信息。
您是在告诉浏览器内容是 text/plain
- 这就是它仅作为文本处理的原因。将其更改为 text/html
,它应该可以工作。
作为替代方案,您可以将打开的 window 的内容设置为 window.document.write()
。
document.querySelector("#someButton").onclick = function() {
let child = window.open("about:blank","myChild");
child.document.write(`<html>
<head><title>Hi mum!</title></head>
<body><p>Hello World</p></body>
</html>`);
child.document.close();
}
public openNewTab(blob: Blob | string) {
const data = 'data:text/plain;charset=utf-8,' + encodeURIComponent(blob);
window.open(data, '_blank');
setTimeout(() => window.URL.revokeObjectURL(data), 100);
}
我正在尝试将 blob 文件(在此示例中为字符串)作为 HTML 内容打开到新选项卡中。这个函数工作正常,但它打开一个纯文本内容,标签就像“<html><head><title>....
”一样写成文本。我想显示 HTML 内容。我试图将数据定义为 text/html 但它不起作用。如果不使用任何库,我该怎么做?
我也试过像这样使用锚标签;
const anchorElement = document.createElement('a');
document.body.appendChild(anchorElement);
anchorElement.setAttribute('href', data);
anchorElement.setAttribute('target', '_blank');
anchorElement.click();
与window.open()的结果相同。
您可以使用 window 文档的写入功能实现它,如下所示:
public openNewTab(blob: Blob | string) {
const data = 'data:text/plain;charset=utf-8,' + encodeURIComponent(blob);
var myWindow = window.open("", '_blank');
myWindow.document.write(data);
setTimeout(() => window.URL.revokeObjectURL(data), 100);
}
您可以在 https://www.w3schools.com/jsref/met_win_open.asp 找到更多详细信息。
您是在告诉浏览器内容是 text/plain
- 这就是它仅作为文本处理的原因。将其更改为 text/html
,它应该可以工作。
作为替代方案,您可以将打开的 window 的内容设置为 window.document.write()
。
document.querySelector("#someButton").onclick = function() {
let child = window.open("about:blank","myChild");
child.document.write(`<html>
<head><title>Hi mum!</title></head>
<body><p>Hello World</p></body>
</html>`);
child.document.close();
}