【问题标题】:Access Denied error when document.domain is set设置 document.domain 时访问被拒绝错误
【发布时间】:2013-10-02 12:34:51
【问题描述】:

发帖人:http://www.kendoui.com/forums/kendo-ui-web/editor/access-denied-error-when-document-domain-is-set-.aspx

我正在一个需要设置 document.domain 的应用程序中工作。这是没有商量余地的。当 document.domain 设置并且我使用 localhost 或 FQDM 时,我从 Kendo 收到“拒绝访问”错误。它与为编辑器创建或访问 iframe 有关。错误发生在 kendo.editor.js 的第 301 行,即:

295     iframe = $("<iframe />", { src: 'javascript:""', frameBorder: "0" })
296                        .css("display", "")
297                        .addClass("k-content")
298                        .insertBefore(textarea)[0];
299     
300     wnd = iframe.contentWindow || iframe;
301     doc = wnd.document || iframe.contentDocument;

您可以通过编辑器演示(可在剑道下载中找到:examples\web\editor\index.html)并在头部末尾添加以下脚本标签来重现此问题:

<script>document.domain=document.domain;</script>

在编辑器初始化后设置 document.domain 显然可行,但可能并不总是一种选择。 如何在 document.domain 设置后让编辑器工作? 有没有办法“取消设置”document.domain?显然我宁愿不编辑剑道,但如果他们可以添加修复程序,那么我会为它打开一个错误。

我尝试通过 js 在其源属性中将 iframe 的 document.domain 设置为其父级的 document.domain,但这没有帮助。

这发生在 IE 8 和 9 中。我使用的剑道版本是 2013.2.716。如果您需要任何其他信息,请告诉我。

【问题讨论】:

    标签: javascript internet-explorer kendo-ui


    【解决方案1】:

    唯一直接的解决方案是从 contentEditable 元素初始化编辑器,如下所示:http://demos.kendoui.com/web/editor/inline-editing.html。然后编辑器不会创建 iframe。

    【讨论】:

    • 我正在使用 .Net MVC html 助手设置编辑器。你能用它设置一个内联编辑器还是我需要移动到 JS 来配置它?目前我没有看到使用助手的方法。
    • @bygrace 目前这不能从 MVC 帮助程序中完成。不过值得为将来的版本添加。
    • @bygrace 这个问题现在应该已经解决了。
    • 一位 Telerik 代表告诉我“通过强制 _createContentElement 方法修改编辑器代码,以便在初始化 iframe 时始终更改 document.domain(删除域!= location.hostname 条件)”。那行得通。 2014 年 3 月 21 日,我们收到一封私人电子邮件,说他们添加了域配置,以便可以配置此功能而不是编辑源代码。
    猜你喜欢
    • 2012-05-12
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2010-09-29
    • 1970-01-01
    • 2010-10-24
    • 2012-12-21
    相关资源
    最近更新 更多