Javascript 包括带有innerHTML转义字符的脚本

Javascript 包括带有innerHTML转义字符的脚本,javascript,escaping,innerhtml,Javascript,Escaping,Innerhtml,我试图在innerHTML中输出元素: <script type="text/javascript"> function fileManager() { data = document.getElementById("FM"); data.innerHTML = "<script type='text/javascript' src='functions.js'></script>"; } </sc

我试图在innerHTML中输出
元素:

<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>

函数fileManager()
{
数据=document.getElementById(“FM”);
data.innerHTML=“”;
}
    文件管理器
脚本的innerHTML部分工作得很好,只是双引号(“)中的转义字符有问题。整个
似乎被错误地破坏/写入,我似乎无法找出它的错误

如果您想知道,functions.js文件只包含用于测试的
document.write(“test”);

不知什么原因,这不起作用。结果是一个断页,我在脚本中看到了一些其他函数,但没有意义。如何正确地转义它?

。还有一个问题
.innerHTML
。因此我建议:

function fileManager()
{
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = 'functions.js';
    document.getElementById("FM").appendChild(script);
}
.还有一个问题
.innerHTML
。因此我建议:

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

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

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

“当您尝试使用javascript插入脚本标记时,某些浏览器中会出现错误。您需要做的是像这样分解脚本标记:

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


“这真的有区别吗?@grampage在处理firefox和某些文档类型时对我有影响。@AshrayBaruah我真的很好奇这会如何改变任何事情。结果字符串似乎是。。。从javascript的角度看是的,但从Java的角度看不是html@climbage好吧关于它,这里有一个很好的讨论。这真的有什么不同吗?@grampage它在处理firefox和某些文档类型时对我有帮助。@AshrayBaruah我真的很好奇这会如何改变任何事情。结果字符串似乎是。。。从javascript的角度看是的,但从Java的角度看不是html@climbage好的,这里有一个很好的讨论,我将尝试这段代码。但是innerHTML不应该执行脚本。它的目的是将标记作为纯文本放在元素中。稍后,浏览器应该执行标记所做的任何操作,因为它将标记检测为HTML元素。至少这是个主意。我在某个地方读到过,这应该是有效的,它只是在@user1020567中输出一个HTML标记,我不明白,你要么希望脚本执行,要么不执行。但你似乎想两者兼而有之,执行还是不执行?使用
.innerHTML
创建的脚本元素将不会执行,因此我不理解。创建脚本元素的全部目的是执行它的
src
或它的内容,这是
.innerHTML
所不能做到的。伙计,我现在很困惑:这不是我的意思。innerHTML将把我在双引号内写的任何内容放入元素中。理论上,应该可以传递元素,因为它只是简单的HTML。一旦脚本位于@user1020567内,浏览器就会执行该脚本。浏览器不会执行您使用
.innerHTML
创建的脚本。如果不起作用,请查看是否有任何错误。另外,将
文档.写入
替换为
控制台.log
:p@user1020567限制是脚本元素没有被执行,无效的html通常被“意外”处理。我将尝试这段代码。但是innerHTML不应该执行脚本。它的目的是将标记作为纯文本放在元素中。稍后,浏览器应该执行标记所做的任何操作,因为它将标记检测为HTML元素。至少这是个主意。我在某个地方读到过,这应该是有效的,它只是在@user1020567中输出一个HTML标记,我不明白,你要么希望脚本执行,要么不执行。但你似乎想两者兼而有之,执行还是不执行?使用
.innerHTML
创建的脚本元素将不会执行,因此我不理解。创建脚本元素的全部目的是执行它的
src
或它的内容,这是
.innerHTML
所不能做到的。伙计,我现在很困惑:这不是我的意思。innerHTML将把我在双引号内写的任何内容放入元素中。理论上,应该可以传递元素,因为它只是简单的HTML。一旦脚本位于@user1020567内,浏览器就会执行该脚本。浏览器不会执行您使用
.innerHTML
创建的脚本。如果不起作用,请查看是否有任何错误。另外,将
文档.写入
替换为
控制台.log
:p@user1020567限制是脚本元素不会执行,无效的html通常会“意外”处理