IE9 ajax保存权限被拒绝

Posted

技术标签:

【中文标题】IE9 ajax保存权限被拒绝【英文标题】:IE9 ajax save permission denied 【发布时间】:2013-01-25 05:10:46 【问题描述】:

IE9 TinyMCE ajax 保存问题

我在一页中有几个标签,在一个标签中我有三个文本区域(都包含 TinyMCE)编辑器。

我正在使用 ajax 发布表单并保存值,然后重新显示从 PartialViewResult 返回的部分视图。

我正在使用最新版本(3.5.8)的 TinyMCE。

当我第一次点击时,textarea 值被保存。但是当我第二次单击该选项卡时,该选项卡消失并给了我“SCRIPT70:权限被拒绝”。

该错误发生在 tiny_mce_src.js 处

    getBody : function() 
        return this.bodyElement || this.getDoc().body;
    

我尝试使用 document.domain = 'localhost'(写在 tiny_mce_src.js 的顶部),它可以工作,但只有一个 textarea 转换为 TinyMCE 编辑器,另外两个保留为正确的 textarea。

还尝试将此设置为 1(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_OBJECT_CACHING\iexplore.exe)

我的发布表单和重新显示的代码如下。

    $(".save").live("click", function () 
           tinyMCE.triggerSave();
           var f = $(this).parents("form");
           var action = f.attr("action");
           var serializedForm = f.serialize();
           $.ajax(
               type: 'POST',
               url: action,
               data: serializedForm,
               async: false,
               cache: false,
               success: function (data, textStatus, request) 
                     // redisplay partial view
                     $("div.tab-pane.active").html(data);
                     window.scrollTo(0, 0);
                     InItTinyMCE();
               ,
               error: function (req, status, error) 
                     alert("Error occurred!");
               
           );
           return false;
    );

    function InItTinyMCE() 
           tinyMCE.init(
              mode: "textareas",
              cleanup: true
           );
    

请帮忙。

【问题讨论】:

【参考方案1】:

您可能必须正确重新初始化 tinymce 实例

要关闭编辑器实例,请使用:

tinymce.execCommand('mceRemoveControl',true,'your_editor_id');

重新初始化使用

tinymce.execCommand('mceAddControl',true,'your_editor_id');

【讨论】:

意味着我应该首先在 InItTinyMCE 方法中初始化,然后在成功回调时删除并重新初始化? 否,但在您的问题中不清楚编辑器实例是否正在重新初始化或位于选项卡或其他东西上。 tinymce 不喜欢在 dom 中移动并再次初始化编辑器会导致您描述的行为 是的,你是对的。我两次初始化tinymce(第一次是在标签加载时,第二次是在成功回调时)。我只减少了一次 TinyMCE 的初始化。现在关闭编辑器并在需要时随时重新初始化。非常感谢您的回复。【参考方案2】:

尝试使用模式:精确

$(window).ready(function() 
tinyMCE.init(
    ...
    mode : "exact",
    elements : "elm1,elm2"
);

)

..................

【讨论】:

我已经尝试过了,它也可以工作,但是当我指定 document.domain 时,只有一个文本区域被转换为 tinyMCE 编辑器,另外两个呈现为正确的文本区域。【参考方案3】:
add some line in Sizzle function in sizzle.js like this -

function Sizzle( selector, context, results, seed ) 
var match, elem, m, nodeType,
// QSA vars
i, groups, old, nid, newContext, newSelector;

try
document === document; //may cause permission denied

catch(err)
document = window.document; //resets document, and no more permission denied errors.

if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) 
setDocument( context );

//remaining code will be same 


【讨论】:

以上是关于IE9 ajax保存权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

github提交用户权限被拒

当ajax目标是localhost时,IE 10和11中的访问被拒绝

使用 Jquery 在 IE 8 和 7 中“权限被拒绝”

ios 被拒的原因记录(因为权限问题被拒)

将文件保存到 xampp htdocs 目录时权限被拒绝

IE 使 Jquery.html 失败,权限被拒绝