0

我在下面的代码中尝试通过单击按钮将一些 javascript 动态写入新的 html 页面。

然而,我在尝试这样做时遇到错误,理论上我得到“未终止的字符串常量”,这应该有效:

var html     =  '<!DOCTYPE html>\n'
html    +=  '<html>\n'
html    +=  '<head>\n'
html    +=  '<script type="text/javascript">\n'
html    +=  'function testme() {\n'
html    +=  'alert("the test worked!")\n'
html    +=  '}\n'       
html    +=  '</script>\n'
html    +=  '</head>\n'
html    +=  '<body>\n'
html    +=  '</body>\n'
html    +=  '</html\n'

window.open('','').document.write(html)
4

2 回答 2

1

您在最后一行缺少一个结束 >

html    +=  '</html\n'  <-- Missing a greater than

应该

html    +=  '</html>\n'

如果代码是内联的并且不在外部脚本中,您将需要分解结束脚本标记。

html    +=  '</scr' + + 'ipt>\n';

另外,使用分号。

现在 window.open, document.write 行看起来很奇怪。大多数开发人员会将其编写为

var winPop = window.open('','');
winPop.document.open();
winPop.document.write(html);
winPop.document.close();
于 2012-11-05T17:57:14.230 回答
0

只是一个提示,您可以使用多行而不是html +=每行都只需在行尾添加反斜杠,这样:

html = '<html>\n  \
        <head>\n \
        <script type="text/javascript">\n \
            function testme() {\n \
                alert("the test worked!")\n \
            }\n \
        </script>\n \
        </head>\n \
        <body>\n \
        </body>\n \
        </html>\n  ';

但是,您的代码中有一些缺陷,您忘记了>就像</html> epascarello的那样,分解脚本标签。

但是,您可能想查看是否要使用弹出窗口打开不同的 html 文档,甚至是 php 文件,从那时起您可以获取$_GET值并用它填充您的自定义值。什么会更可靠。

查看 w3c 关于 $_GET

于 2012-11-05T18:30:10.770 回答