2

我正在使用 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>");
4

3 回答 3

7

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

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

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

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

关于这个主题有一个很好的常见问题解答条目

于 2010-01-05T09:16:45.793 回答
6

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

opened.document.write("<\/script>");
于 2010-01-05T09:17:05.410 回答
0

编辑:正如其他人指出的那样,您应该用反斜杠转义斜杠。

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

opened.document.write("</scr"+"ipt>");
于 2010-01-05T09:14:34.003 回答