解析多个级别的document.write嵌套

时间:2014-12-02 08:37:43

标签: javascript parsing document.write

这个问题有点奇怪,但我这样做只是为了学习目的。

我有这个字符串

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

并且,我正在尝试解析/评估此字符串,以便最内部document.write打印&#34; Hello World&#34;。这是我尝试过的。

function (str) {
    str = str.replace(/["']/g, '"')
        .replace(/"<script>document.write/g, "")
        .replace(/;<\/script\>"/g, "");
    eval(str);
}

但是,这看起来像是可怕的作弊行为。我想以更微妙的方式做到这一点。例如,转义\或拆分</script>标记。但是不能简单地逃避反斜杠,因为对于更深的嵌套,斜线的数量需要更多。

有什么想法吗?

0 个答案:

没有答案