解析包含脚本标记和document.write的HTML字符串

时间:2014-11-27 13:08:24

标签: javascript

我有以下字符串。它嵌套了document.write字符串语句。我想将最里面的脚本的文本内容添加到文档中。

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

如何解析此字符串以便在文档中添加Hello World。对于例如html输出可以如下所示。(可以在body或div中,任何东西都可以。)

<body>Hello World</body>

P.S。可以有任意数量的嵌套document.write语句。需要解析这个可以处理n级嵌套的字符串。

2 个答案:

答案 0 :(得分:1)

我现在明白了。

    var str = "document.write('<script>document.write(\"<script>document.write(\"Hello World\");<\/script>\");<\/script>')";
    var aStr, scriptEle = document.createElement('script');
    aStr = str.replace(/["']/g, '"');
    aStr = aStr.replace(/"<script>document.write/g, "");
    aStr = aStr.replace(/;<\/script\>"/g, "");
    scriptEle.innerHTML = aStr;
    // console.log(aStr);
    document.body.appendChild(scriptEle);

这也可以处理n级嵌套。

答案 1 :(得分:0)

您基本上必须告诉脚本执行<script>标记内的脚本。 你可以通过这样做来实现这个目标

var code = "<script>document.write(\"Hello World\");</scr"+"ipt>";
$('body').append($(code)[0]);

哪个会在body标签中愉快地显示hello world。您可以使用此方法通过将脚本附加到任何标记上来执行脚本。以下是jsfiddleSO answer,可以让您了解如何执行动态追加的js

希望有帮助:)