为什么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 [重复]