在加载前将内容添加到打开的窗口

时间:2015-05-12 13:59:27

标签: javascript windows

我在JS中打开新窗口的代码。

var myWindow = window.open();
myWindow.document.write('html');            

是否可以在窗口加载之前将内容写入文档?我想将整个html添加到文档中,包括一些JS代码。我尝试连接html代码,但即使使用我的代码编辑器也没有。

1 个答案:

答案 0 :(得分:1)

您可以在打开文档之前生成整个文档,但是这样做的方式是数据URI 对象URL 指向 Blob < / em>,例如

// Blob method, most modern, almost no restrictions other than legacy browser support
function genWindow(code) {
    var b = new Blob([code], {type: 'text/html'}),
        uri = URL.createObjectURL(b),
        wind = window.open(uri, '_blank');
    URL.revokeObjectURL(uri); // and cleanup
    return wind;
}
genWindow('\
<!doctype html>\n\
<html>\n\
    <head>\n\
        <title>Hello World!</title>\n\
    </head>\n\
    <body>\n\
        <span>Foobar</span>\n\
    </body>\n\
</html>\n\
');

或者我提到的其他方法;

// data URI method, more restricted (e.g. file size) but will work in older browsers
function genWindow2(code) {
    return window.open('data:text/html,' + window.encodeURIComponent(code), '_blank');
}
genWindow2('\
<!doctype html>\n\
<html>\n\
    <head>\n\
        <title>Hello World!</title>\n\
    </head>\n\
    <body>\n\
        <span>Fizzbuzz</span>\n\
    </body>\n\
</html>\n\
');