4

IE9 TinyMCE ajax 保存の問題

1 つのページにいくつかのタブがあり、タブの 1 つに 3 つのテキストエリア (すべて TinyMCE を含む) エディターがあります。

私は ajax を使用してフォームを投稿し、値を保存してから、PartialViewResult から返された部分ビューを再表示しています。

TinyMCE の最新バージョン (3.5.8) を使用しています。

初めてクリックすると、テキストエリアの値が保存されます。しかし、2回目にクリックすると、タブが消えて「SCRIPT70:許可が拒否されました」と表示されます。

エラーは tiny_mce_src.js で発生します

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

document.domain = 'localhost' (tiny_mce_src.js の上部に記述) を使用してみましたが、動作しますが、1 つのテキストエリアのみが TinyMCE エディターに変換され、他の 2 つは適切なテキストエリアのままです。

これを 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
           });
    }

助けてください。

4

3 に答える 3

3

tinymce インスタンスを正しく再初期化する必要がある場合があります

edtor インスタンスをシャットダウンするには、次を使用します。

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

使用を再初期化するには

tinymce.execCommand('mceAddControl',true,'your_editor_id');
于 2013-01-25T09:10:39.637 に答える
0

mode:exactを使用してみてください

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

})

................。

于 2013-01-25T05:25:21.030 に答える
0
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 

}
于 2015-03-13T06:50:51.797 に答える