代码之家  ›  专栏  ›  技术社区  ›  M. A. Kishawy Andy Guibert

javascript如何生成包含更多javascript的新页面?

  •  2
  • M. A. Kishawy Andy Guibert  · 技术社区  · 14 年前

    我正在使用JS打开新页面,并在其中写入HTML代码,但是当我尝试使用 document.write() 功能不起作用。显然,主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 回复  |  直到 12 年前
        1
  •  7
  •   Quentin    14 年前

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

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

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

    注意你应该这样做 全部的 结束标签(不仅仅是 </script> )因为sgml的工作方式(即使大多数浏览器不完全遵守sgml的规则)。

    a good FAQ entry on this subject .

        2
  •  6
  •   Ry-    12 年前

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

    opened.document.write("<\/script>");
    
        3
  •  0
  •   Jerome    14 年前

    编辑: 正如其他人指出的,您应该用反斜杠来避开斜杠。

    简单(但非标准)的解决方案是断开您的字符串:

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