0
<!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)从数组中添加和删除项目。然后,我有一个函数可以绘制()数组中保存的项目的 ul 列表。在每个项目的后面,我想提供一个删除链接,它调用一个 JavaScript 函数从数组中删除项目,然后调用 drawList() 来重绘列表。

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

4

2 回答 2

1

我相信这是一些奇怪的浏览器错误。由于某种原因,您不能</script>在脚本块内。

改成

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

jsFiddle 上的示例

于 2013-11-01T21:26:14.197 回答
0

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

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


所以总结一下,

  • 浏览器没有适当的安全措施来阻止脚本被注入您的页面。
  • 这不是浏览器错误附近的地方。
于 2013-11-01T21:31:06.493 回答