包含带有innerHTML的脚本 - 转义字符

时间:2012-07-13 20:43:15

标签: javascript escaping innerhtml

我正在尝试在innerHTML中输出<script>元素:

<script type="text/javascript">
    function fileManager()
    {
        data = document.getElementById("FM");
        data.innerHTML = "<script type='text/javascript' src='functions.js'></script>";
    }
</script>
    <div id="FM"></div>
    <ul id="show-menu">
        <li onClick="fileManager()">File Manager
    </ul>

脚本的innerHTML位工作得很好,只是在双引号(“)中转义字符时出现问题。整个<script type='text/javascript' src='functions.js'></script>似乎被打破/写错了我似乎无法弄清楚它有什么问题。

如果您想知道,functions.js文件仅包含document.write("test");用于测试目的。

由于某些未知原因,这不起作用。结果是一个破碎的页面,我在脚本中看到了其他一些功能,但它没有意义。我该如何正确地逃避它?

2 个答案:

答案 0 :(得分:4)

The literal <script>/</script> inside the script is actually breaking the html tag that contains the script itself。还有一个问题 .innerHTML does not execute or load scripts。所以我建议:

function fileManager()
{
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = 'functions.js';
    document.getElementById("FM").appendChild(script);
}

答案 1 :(得分:0)

当您尝试使用javascript插入脚本标记时,某些浏览器中存在一个错误。你需要做的就是像这样分解脚本标签:

"<scr"+"ipt..........</scr"+"ipt>"

这样可行。