Chi*_*hin 6 javascript microsoft-metro windows-8
我正在制作一个javascript地铁应用,并有一些这样的代码:
<script>
document.writeln(foo());//this line is trouble
</script>
Run Code Online (Sandbox Code Playgroud)
当我试图跑步时,它给了我一个相当长的错误:
ms-appx://a375ffac-3b69-475a-bd53-ee3c1ccf4c4e/default.html第20行第9行未处理的异常
0x800c001c - JavaScript运行时错误:无法添加动态内容.脚本试图注入可能不安全的动态内容或先前动态修改的元素.例如,使用innerHTML属性添加脚本或格式错误的HTML将生成此异常.使用toStaticHTML方法过滤动态内容,或使用createElement等方法显式创建元素和属性.有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=247104.
我怎么能绕过这个?
Bru*_*hes 13
Windows 8限制了您可以通过innerHTML和Writeln设置的内容,因为它被认为是不安全的......
添加内容的正确方法是:
// The untrusted data contains unsafe dynamic content
var unTrustedData = "<img src='http://www.contoso.com/logo.jpg' on-click='calltoUnsafeCode();'/>";
// Safe dynamic content can be added to the DOM without introducing errors
var safeData = window.toStaticHTML(unTrustedData);
// The content of the data is now
// "<img src='http://www.contoso.com/logo.jpg'/>"
// and is safe to add because it was filtered
document.write(safeData);
Run Code Online (Sandbox Code Playgroud)
如果你的代码有一些javascript,你可以使用这个函数(但微软不要推荐它):
MSApp.execUnsafeLocalFunction(function() {
var body = document.getElementsByTagName('body')[0];
body.innerHTML = '<div style="color:' + textColor + '">example</div>';
});
Run Code Online (Sandbox Code Playgroud)
见:
http://msdn.microsoft.com/en-us/library/windows/apps/Hh767331.aspx
对于你的情况:
MSApp.execUnsafeLocalFunction(function() {
document.writeln(foo());
});
Run Code Online (Sandbox Code Playgroud)
请注意,只有在您了解内容安全的情况下才能执行此操作; 如果你不这样做,我建议使用这个toStaticHTML方法.
| 归档时间: |
|
| 查看次数: |
9703 次 |
| 最近记录: |