繁体   English   中英

使用jQuery.html()添加JavaScript代码

[英]Adding JavaScript code with jQuery.html()

<!DOCTYPE HTML>
<html>
<head>
   <script src="js/jquery-1.10.2.min.js"></script>
   <script>
    $(document).ready(function() { 

           var x="<script>alert('hello world');</script>";

           $("#div_one").html(x);

    });
    </script>
  </head>
  <body>
     <div id="div_one">
     </div>
  </body>
</html>

为什么这不起作用? 我希望脚本标签之间的JS代码能够被解释并看到警告消息...

我想做的事:

我编写了一组函数,这些函数根据用户输入(JavaScript)从数组中添加和删除项目。 然后,我有一个函数draws()数组中保存的项目的ul-list。 在每个项目的后面,我想提供一个删除链接,该链接调用一个JavaScript函数,该函数从数组中删除该项目,然后调用drawList()重新绘制列表。

如果没有该安全策略,则只需按照上面显示的代码进行操作即可。

我相信那是一些奇怪的浏览器错误。 由于某些原因,您无法在脚本块中包含</script>

改成

var x="<scr"+"ipt>alert('hello world');</scr"+"ipt>";

jsFiddle上的示例

那不是错误。 问题在这里:

<script>
$(document).ready(function() { 

       var x="<script>alert('hello world');</script>";

       $("#div_one").html(x);

});
</script>

浏览器认为第一个<script>标记与代码内的</script>关联。

在此处输入图片说明

如您所见,代码显示在DOM中,而不是执行。

为了进一步证明这一点,请参见以下示例: http : //jsfiddle.net/DerekL/Ah8Qz/

var x = $("<script>").html("alert('hello world');");
$("#div_one").append(x);

如果你避免</script>结束标记,那么就不会有问题,因为HTML解析器将忽略任何打开<script>标记内<script>


综上所述,

  • 浏览器没有适当的安全性来阻止脚本被注入到您的页面中。
  • 这远没有浏览器错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM