ページをリロードしない js アプリケーションがあるため、移動するときに TinyMCE コントロールを完全に削除する必要があり、必要な領域に移動するときに再初期化する必要があります。この質問に対する受け入れられた回答を試しましたが、何もしないようです。
tinyMCE を削除してから再度追加するにはどうすればよいですか?
tinymce.EditorManager.execCommand('mceRemoveControl',true, editor_id);
そして私の具体的な実装:
//if I throw an alert here, it does get called, so I know it's not null
if (tinyMCE.getInstanceById("main-text"))
tinyMCE.EditorManager.execCommand('mceRemoveControl', true, "main-text");
私も試しました
tinyMCE.remove( tinyMCE.getInstanceById("main-text"));
// AND
tinyMCE.remove( "main-text");
条件にアラートを入れると、そのステートメントが実行されることはわかっています...それが正しい ID であることはわかっています。API に埋もれているものが他にありませんか? これは jQuery バージョンではありません。エディターは削除の試行後も保持され、フォームを使用して状態に戻って再初期化すると、同じ ID を持つ新しいエディターも取得されます。
編集: 以下の解決策は、現在のビルド 3.5b3 では機能せず、3.4.9 でのみ機能します。「t が定義されていない」というバグがあります
念のため、これは init の後の DOM の関連部分です。
<textarea id="main-text" style="display: none;" aria-hidden="true"></textarea>
<span id="main-text_parent" class="mceEditor defaultSkin" role="application" aria-labelledby="main-text_voice" style="display: inherit;">
<span id="main-text_voice" class="mceVoiceLabel" style="display:none;">Rich Text Area</span>
<table id="main-text_tbl" class="mceLayout" cellspacing="0" cellpadding="0" role="presentation" style="width: 100%; height: 400px;">
<tbody>
<tr class="mceFirst" role="presentation">
<td class="mceToolbar mceLeft mceFirst mceLast" role="presentation">
<div id="main-text_toolbargroup" aria-labelledby="main-text_toolbargroup_voice" role="group" tabindex="-1">
<span role="application">
</div>
<a onfocus="tinyMCE.getInstanceById('main-text').focus();" title="Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X" accesskey="z" href="#"></a>
</td>
</tr>
<tr>
<tr class="mceLast">
</tbody>
</table>
</span>