【问题标题】:loading an iframe from a string variable in xulrunner从 xulrunner 中的字符串变量加载 iframe
【发布时间】:2012-10-15 15:08:08
【问题描述】:

我正在将代码从使用签名的 JAR 文件转换为使用基于 XULRunner 的应用程序。我在加载带有存储在 javascript 变量中的 html 内容的 iframe 的代码时遇到问题。

代码如下所示:

var doc = iframe.contentDocument;
doc.open();
doc.write(html);
doc.close();

iframe 具有 type="content"。照原样,在 XULRunner 中,我在 doc.open() 调用中遇到异常:

[Exception... "The operation is insecure."
   code: "18"
   nsresult: "0x80530012 (SecurityError)"
   location: "chrome://ec4main/content/apps/newsfeedtest/lib.js Line: 938"]

如果我将 iframe 更改为 type="chrome",那么它可以工作,但这似乎是个坏主意,因为 HTML 并不总是受信任的内容。

【问题讨论】:

    标签: xulrunner


    【解决方案1】:

    您应该使用data URLs 而不是document.write()(这确实不安全且不推荐):

    var wnd = iframe.contentWindow;
    wnd.location.href = "data:text/html;charset=utf-8," + encodeURIComponent(html);
    

    【讨论】:

    • +1 用于将文档位置更改为数据:text/html 有关信息,消息“异常:操作不安全”是 Firefox 默认控制台 (bugzilla.mozilla.org/show_bug.cgi?id=663406) 上的错误,document.write 应该工作,它适用于 Firefox 和 Chromium 默认控制台上的 Firebug 控制台。在我的情况下,如果网页没有加载但您可以查看页面源代码,我可以强制 HTML 显示: document.write(document.body.innerHTML) 或 document.location = "data:text/html;charset= utf-8," + encodeURIComponent(document.body.innerHTML)
    猜你喜欢
    • 2019-07-29
    • 2010-11-20
    • 1970-01-01
    • 2012-12-14
    • 2017-12-24
    • 2018-07-16
    • 1970-01-01
    • 2012-05-27
    • 2011-08-09
    相关资源
    最近更新 更多