5

私はtinyMCEを次のように初期化しました:

$('#text').tinymce({
    // Location of TinyMCE script, optional, already loaded in page.
    script_url : '../adminContent/js/tiny_mce/tiny_mce.js',

    // General options
    theme : "advanced",
    plugins : "table,advimage,advlink,iespell,inlinepopups,preview,contextmenu,paste,visualchars",

    // Theme options
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,forecolor,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image",
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,removeformat,cleanup,code,|,preview,tablecontrols,|,hr,visualaid,|,charmap,iespell",
    theme_advanced_buttons3 : "",

    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true
});

上記のコードは完全に機能します。問題は、tinyMCE を削除しようとしたときです。

私の削除コードは次のとおりです。

$('#text').tinymce().execCommand('mceRemoveControl', false, 'text');

私も試しました:

$('#text').remove();

$('#text').tinymce().remove();

最初のものは何もしないようです。最後の2つは私にこのエラーを与えます:

Uncaught ReferenceError: t が定義されていません

tinymce は HTML ドキュメントによって読み込まれますが、次を使用して別のスクリプトを読み込んでいます。

$.getScript(viewPath + '/mod/adminContent/js/editContent.js', function(){
    initEditContent(popup);
});

popup は、tinymce が読み込まれるポップアップへの参照です。これは、jquery を使用して作成された単なる div です。div の内容は、jquery ajax を使用して読み込まれます。

editContent.js は次のようになります。

var contentID;
function initEditContent(popup){
    contentID = $('#contentID').val();

    tinyMCE.execCommand("mceAddControl", true, 'text');

    setTimeout(reposition, 50);
    setTimeout(reposition, 150);
    setTimeout(reposition, 250);

    // Submit form
    $('#editTextForm').ajaxForm(
    {
        // Before submit
        beforeSubmit: function(){
            //setPopupMessage(popup, '<div id="loading"><img src="../../img/loading.gif" />&nbsp;Please wait...</div>');
        },

        // Once submit completed
        success: function(responseText){
            tinyMCE.execCommand("mceRemoveControl", true, 'text');
            //closePopup(popup);

            // Update button with new data
            $('#' + contentID).html(responseText);
        }
    });
}
4

3 に答える 3

4

これは、バージョン 3.5b3 以降の tinyMCE の問題のようです。バージョン 3.5b2 で動作します。

私のフィドルの例を見てください。

正常にロードおよびアンロードされることがわかります。ただし、バージョンを edge または 3.5b3 に変更すると、アンロード時にエラーが発生します。

tinyMCEバグサイトに記載されているように:

問題の説明:

13518 行目の Javascript エラーです。t が定義されていません。

再現手順:

  1. tinyMCE.execCommand('mceRemoveControl', false, idOfTextarea); を呼び出します。

問題:

3.5b3 では、t の名前を self に変更しましたが、ドキュメントを取得するために同じ行で使用されている変数の名前を変更しませんでした。

解決策:

行 13518 (関数 hide() 内) を次のように変更します。 var self = this, doc = self.getDoc();

于 2012-04-11T18:35:58.647 に答える
1

問題が解決しました。興味のある方のために、tinyMCE を HTML ドキュメントにロードし、初期化する必要があるときに次のようにしました。

tinyMCE.init({
    mode : "textareas",
    // General options
    theme : "advanced",
    plugins : "table,advimage,advlink,iespell,inlinepopups,preview,contextmenu,paste,visualchars",

    // Theme options
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,forecolor,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image",
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,removeformat,cleanup,code,|,preview,tablecontrols,|,hr,visualaid,|,charmap,iespell",
    theme_advanced_buttons3 : "",

    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true,

    oninit: function(){
        alert('tinyMCE loaded');
    }
});

上記のコードは、tinyMCE エディターが必要になるたびに呼び出されます。次に、ポップアップを閉じたときに次のように削除しました。

tinyMCE.remove('text');
于 2012-04-10T12:05:30.967 に答える
0

試す

$('#text').tinymce().execCommand('mceRemoveControl', true, 'text');

ここで、「text」はエディターの ID です

<textarea id='text' .....
于 2012-04-09T13:18:11.060 に答える