javascript - 动态创建整个页面,包括脚本和样式

标签 javascript

我正在使用以下代码。目的是打开一个新窗口并从头开始创建一个基本文档,而不是从文件加载它。

function openNew() {
    var win = window.open('', 'new') ;

    win.document.write('<html><head><title>New</title></head><body><div id="wrap">Hello World</div></body></html>') ;

    var head = win.document.getElementsByTagName('head')[0] ;

    var style = win.document.createElement('link') ;
    style.rel = "stylesheet" ;
    style.type = "text/css" ;
    style.href = "/css/main.css" ;
    head.appendChild(style) ;

    var script = win.document.createElement('script') ;
    script.type = "text/javascript" ;
    script.src = "/js/main.js" ;
    head.appendChild(script) ;

    return false ;
}

document.write 部分似乎有效,但其余部分没有任何作用。或者至少我什么都不能告诉,我没有得到任何错误或任何东西。我尝试将脚本部分与文档的其余部分一起写入 document.write 中,但这没有帮助。还尝试使用 innerHTML 而不是 write() 但这根本不起作用,使用 创建整个文档(html、head 和 body 标签)也不起作用创建元素

如果有任何重要性的话,需要加载的脚本与首先打开的脚本相同。我不知道这是否会以某种方式造成冲突,尽管我不确定为什么会这样做。只是为了更好的衡量而提及它。

这可以做到吗?

最佳答案

在访问文档之前尝试关闭该文档。

var win = window.open('...');
win.document.open();
win.document.write('...');
win.document.close();

其他选项是构建字符串并一次性添加所有内容,而不是附加到它。

关于javascript - 动态创建整个页面,包括脚本和样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350037/

相关文章:

javascript - setTimeout 和这个 - 最简单的解决方案?

javascript - 当您在 Javascript 中单击它时,如何将 V 形从指向右变为指向下?

javascript - 如何在 Handlebars 中编写这个 pug 函数?

javascript - :hover { cursor: pointer } on circle created via borderradius will make it a pointer even outside the circle

javascript - 使用按钮切换数据库中的位值 - 使用 Entity Framework

javascript - Javascript中是否有&逻辑运算符

javascript - model.set 不会保留backbone.js 中的值

javascript - 无法将 extjs 3 迁移到 extjs 4

javascript - String.length 在 JavaScript 中如何工作?

javascript - 过滤分页传递参数到异步 ember 数据关系请求