为什么Javascript代码在ko.observableArray()中执行;

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Javascript代码在ko.observableArray()中执行;相关的知识,希望对你有一定的参考价值。

我有一个问题,我正在使用knockout.js从谷歌驱动器和页面列表中读取文件。我使用observable数组来存储文件数据文件数据包括文件的各种参数,如名称,大小和链接等。

我正在创建JSON对象并推送到数组。但这是主要问题。如果文件名包含类似的javascript代码

<script>alert('i am executing');</script>

然后它执行并显示警报消息

这里有一些细节

var file = {
  Name: <script>alert('message')</script>,
  URL: item.alternateLink,
  ServerRelativeUrl: item.alternateLink,
  modified: item.modifiedDate,
  icon: item.iconLink
};

docs.push(file);

有没有人面临同样的问题或有一个解决方案,以防止不需要的脚本执行

答案

由于您使用html绑定属性Name,因此属性中的任何javascript代码都将由浏览器执行。为了防止这种情况,您应该使用text而不是html来绑定数据。这将编码任何HTML防止脚本注入。

EG

<p class="summary">
   <a target="_blank" data-bind="text:Name, attr:{href:URL}"></a>
</p>

以上是关于为什么Javascript代码在ko.observableArray()中执行;的主要内容,如果未能解决你的问题,请参考以下文章

为什么我的HTML代码在Javascript代码之前运行[重复]

为什么Javascript代码在ko.observableArray()中执行;

setTimeout 函数执行代码没有任何延迟。 Javascript [重复]

为啥这个 javascript 字符串代码在 Internet Explorer 7 中不起作用?

Python和JavaScript在使用上有什么区别?

为什么在javascript中直接在代码中使用大数字?