我可以打开一个新窗口并用字符串变量填充它吗?

arc*_*Rob 23 html javascript jquery dom

我正在与一些看似简单的事情进行一场战斗.我有一个[javascript]字符串,其中包含DOM元素,并且想要打开一个新窗口(window.open()?)并使用填充新窗口的字符串.即让浏览器获取字符串并将其转换为HTML.这可能吗?

Arc*_*her 56

是的,它可能......

var wnd = window.open("about:blank", "", "_blank");
wnd.document.write(html);
Run Code Online (Sandbox Code Playgroud)

这应该够了吧.


Kev*_*zer 7

HTML

Archer的答案很好,但如果您愿意,可以在一个班轮内完成:

window.open("data:text/html;charset=utf-8,"+html, "", "_blank")
Run Code Online (Sandbox Code Playgroud)

打开XML?

window.open("data:text/xml;charset=utf-8,"+xml, "", "_blank")
Run Code Online (Sandbox Code Playgroud)

使用XML,确保字符串以<?xml version="1.0" encoding="UTF-8"?>并且具有根元素开头.如果没有,您可以轻松添加它:

window.open('data:text/xml;charset=utf-8,<?xml version="1.0" encoding="UTF-8"?><RootTag>'+xml+'</RootTag>', "", "_blank")
Run Code Online (Sandbox Code Playgroud)

  • 我想你应该在这里提到“数据 URI”这个词,你正在打开一个数据 URI (2认同)

小智 6

如果您需要新选项卡,可以使用它。

const win = window.open('about:blank', '_blank');
win.document.write('<h1>test</h1>');
win.focus();
Run Code Online (Sandbox Code Playgroud)


小智 5

Archer的回答是最好的方法。但是您需要关闭文档才能运行“htmlString”中的脚本。

 var wnd = window.open("about:blank", "");
        wnd.document.write(htmlString);
        wnd.document.close();
Run Code Online (Sandbox Code Playgroud)