我的应用程序将 HTML 内容动态构建为字符串,并在完成后将内容附加到 DOM。但是,在 WinJS 中,一旦我尝试将字符串附加到 DOM,就会引发异常。为了解决这些异常,我必须通过 toStaticHTML 运行它来清理 HTML,它在 WinJS 和 Internet Explorer 中全局定义。我遇到的问题是有很多使用 data-* html5 属性。一旦我通过 toStaticHTML 运行它们,它们就会被剥离。为什么 toStaticHTML 删除 data-* 属性?他们真正的安全问题是什么?
请注意,我无法将 DOM 插入包装在 MSApp.execUnsafeLocalFunction 中,因为我使用的是 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>