JavaScript如何创建包含更多JavaScript的新页面?

时间:2010-01-05 09:11:21

标签: javascript html function document.write

我正在使用JS打开新页面并将HTML代码写入其中,但是当我尝试使用document.write()函数在新页面内编写JS时,它不起作用。显然主JS在看到</script>时就会关闭,它将用于将要打开的新页面的JS。

周围有吗?

var opened = window.open("");
opened.document.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
opened.document.write("<html lang=\"en-US\" xml:lang=\"en-US\" xmlns=\"http://www.w3.org/1999/xhtml\">");
opened.document.write("<head><title>Print Copy</title></head>");
opened.document.write("<body>");
opened.document.write("<script type=\"text/javascript\">");
opened.document.write("</script>");
opened.document.write("<p>test</p></body></html>");

3 个答案:

答案 0 :(得分:7)

这听起来像是将JS嵌入到HTML文档中而不是使用外部文件,并且您将其作为text / html提供。 (如果它是XHTML那么你会得到一个简单的格式错误)。

您可以将代码移动到外部文件(这是最简单的选项),或者您可以在看起来像结束标记的任何内容上转义斜杠字符:

document.write("<\/script>");

请注意,由于SGML的工作方式(即使大多数浏览器不完全遵守SGML规则),您应该对所有结束标记(不仅仅是</script>)执行此操作。

a good FAQ entry on this subject

答案 1 :(得分:6)

如果您不想拆分字符串,还可以使用转义字符:

opened.document.write("<\/script>");

答案 2 :(得分:0)

编辑:正如其他人所指出的那样,你应该用反斜杠来逃避斜杠。

简单(但非标准)的解决方案是破坏你的字符串:

opened.document.write("</scr"+"ipt>");