0

我正在编写一个 WinJS 应用程序,该应用程序将用户复制到剪贴板的 HTML 片段替换为

后来,当我去显示 .html 时,我创建了一个 iFrame 元素(使用 jQuery $(''),并尝试将 .html 导入其中,并得到以下错误

0x800c001c - JavaScript 运行时错误:无法添加动态内容。脚本试图注入可能不安全的动态内容或先前动态修改的元素。例如,使用 innerHTML 属性添加脚本或格式错误的 HTML 将生成此异常。使用 toStaticHTML 方法过滤动态内容,或使用 createElement 等方法显式创建元素和属性。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=247104

如果我不对图像进行 base64 编码,即保持它们完整并且可以在页面上显示 iframe 并显示图像,我不会得到例外。

如果我在替换 base64 的 url 后获取 html 并通过 toStaticHTML 运行它,它会从标签中完全删除 src= 属性。

我知道带有编码 pngs 的 .html 是正确的 b/c 我可以在 Chrome 中打开它,它显示得很好。

我的问题是我试图弄清楚为什么它会从标签中去除 src= 属性以及如何修复它,例如,在不使用 jquery 和一些 MS voodoo 的情况下创建 iframe,或者使用不同的技术来清理 HTML?

4

2 回答 2

0

我相信您想使用execUnsafeLocalFunction。例如:

  var target = document.getElementById('targetDIV');
  MSApp.execUnsafeLocalFunction(function () { 
       target.innerHTML = content}
  );
于 2013-11-12T14:07:32.340 回答
0

所以,我发现的一个解决方案(不是 100% 相信它是最好的,并且仍在寻找不那么特定于 M$ 的东西)是 MS Webview

http://msdn.microsoft.com/en-us/library/windows/apps/bg182879.aspx#WebView

我使用如下代码(其中内容是带有 base64 编码图像的 html 字符串)

        var loadHtmlSuccess = function (content) {
            var webview = document.createElement("x-ms-webview");
            webview.navigateToString(content);
            assetItem.append(webview);
        }
于 2013-11-06T02:03:47.363 回答