为什么toStaticHTML删除data-*属性
Why does toStaticHTML remove data-* attributes
我的应用程序将HTML内容动态构建为字符串,完成后将内容附加到DOM。然而,在WinJS中,一旦我尝试将字符串附加到DOM,就会抛出异常。为了解决这些异常,我必须通过运行toStaticHTML来清理HTML,它在WinJS和Internet Explorer中都有全局定义。我遇到的问题是,有很多数据-*html5属性的使用。一旦我把它们运行到StaticHTML,它们就会被剥离。为什么toStaticHTML删除data-*属性?他们真正关心的安全问题是什么?
请注意,我无法在MSApp.execUnsafeLocalFunction中包装DOM插入,因为我使用的是jQuery,并且不允许修改jQuery代码。
var html = "<ul><li data-role='list-node'>My list node</li></ul>";
$('#container').html(toStaticHTML(html));
产品:
<ul>
<li>My list node</li>
</ul>
这是因为在文档中插入HTML的随机部分会引起安全问题,并可能允许不安全的代码在受保护的上下文(您的应用程序,可以完全访问WinRT和用户文档)中执行。
考虑到你在这里面临的挑战,我看到了以下选择: msExecUnsafeLocalFunction的示例用法:toStaticHtml
旨在在HTML/web模式不断发展的情况下保持"安全",因此它是白名单,而不是黑名单msExecUnsafeLocalFunction
中(见下文)。这意味着在这个调用的生命周期内,所有Dom插入都会很好。这不需要更改jquery,只需要您的代码msExecUnsafeLocalFunction
进行调用WinJS.Binding.Template
而不是Jquery来呈现内容。这将克隆节点,而不是字符串化HTMLsetAttribute
设置属性MSApp.execUnsafeLocalFunction(function() {
$('#container').html(html);
});
此处未列出data-role
-属性:http://msdn.microsoft.com/en-us/library/windows/apps/hh465388.aspx
这是一个未知属性,将被删除。
不允许在文档data
中提及:http://msdn.microsoft.com/en-us/library/windows/apps/hh465388.aspx
- jQuery可以't获取data-*属性值,返回undefined
- 如何获取`data-listid`属性值
- 为什么toStaticHTML删除data-*属性
- 访问HTML中的data-*属性并将其作为道具传递
- Ext.data.NodeInterface已禁用属性
- Jquery将data-rel属性添加到所有输入字段,并移除name属性
- 属性来检索和设置Text节点值:data或nodeValue
- 当通过Jquery data()附加时,以及当直接通过HTML中的数据属性附加时,检查HTML元素中的数据()
- 如何使用jQuery选择具有特定data-属性的元素?价值无关紧要
- Javascript个性测试使用'这'和data-*属性
- 使用script元素上的html data-*属性来配置引用的脚本文件
- 将Data属性添加到元素,并从字符串中动态添加值
- 追加并替换data-*属性URL的查询字符串值
- 将变量从data属性传递给onclick函数
- “data-”属性作为超链接的一部分.HTML 到 JavaScript
- 不能读取属性'data'Angularjs-无法从模板读取数据到控制器)
- 如何接受HTML属性data-*, aria-*
- 更新li元素的属性data-id
- 不能获取具有特定id的元素作为属性'data-parent'
- 如何将json格式设置为html5属性"data-settings"