2011-09-14 21 views
2

私はしばらくの間CMSを書いており、現在は最後のいくつかのタッチを入れています。その中の1つにajaxを使用してlightboxスタイルのウィンドウにtinyMCEエディタを提供する方法があります。完全にリロードTinyMCE

初めて読み込んだときに2回目以降は要素名が壊れてしまい、データを返信したり、現在の値をTinyMCEに表示したりしません窓。要素を調べるためにChromeを使用すると、以前のtinyMCEウィンドウを含むスパンがまだ表示されていることがわかります。

私はそれを保持しているdivを削除するためにdocument.body.removeChildを使用します。誰にもアイデアはありますか?

追加:AJAXは(それがウィンドウ内に入るもののすべてのHTMLコードを持っている)バック要求を行ってから取得するときに

、それは新しいdiv要素を作成し、追加するdocument.body.appendChildを使用しています要素を文書に追加し、htmlコードをdivタグに挿入します。

次に、新しいコードを通過し、その領域(そのうちの1つがMCEイニシエータ)のスクリプトを検索し、それらが実行されるようにヘッドに追加します。

ユーザーが保存するのではなくキャンセルをクリックすると、divタグが削除されます。 document.body.removeChild(document.getElementById( "popupbox")); これはうまく動作しますが、

しかし、私がポップアップして前に述べたように再ポペットしてそこの要素を調べると、TinyMCEによって作成されたスパンがあり、名前が変更されています'content'は何らかの理由で8になりました)、エディタ領域にはコンテンツがありません。

私は使用しました: tinyMCE.execCommand( 'mceRemoveControl'、true、 'mce {$ Setting [' name ']}'); tinyMCE.editors [0] .destroy();

でもどちらも機能しません。彼らは、テキストウィンドウには、テキストウィンドウを返しますが、要素はまだそこにあります。

+1

tinyMCEを呼び出すと、最初と2回目の繰り返しでChromeインスペクタのソースコードを投稿できますか? – Jake

答えて

1

tinymce iframeを保持するhtml要素を移動または削除する前に、記述したとおりに(適切なtinymceエディタIDを使用して)エディタを削除することは良い選択です。どこにtinymce.jsをロードしますか?あなたがそれを親ページ(!)にロードする方がいいかもしれないと思うのです。いくつかのコードが役に立つでしょう。

編集:私は残ったスパンを削除しなければならない状況を覚えています。

+0

以前にtiny_mce.jsファイルが含まれていた場合、divはdiv.innerHTML = ajax.responseTextによって生成されます。 responseTextはその中にtinymce.init関数を持つスクリプトスニペットを含むhtml要素の集合です。これらのスクリプトはすべて終了した時点で実行されます。私は実行されている元のスニペットで最初にバンドルされているアンロードスニペットを持っていますが、execCommand(mceRemoveControl)と.destroy()は動作しません。現時点では、ウィンドウが閉じられたときにページが更新され、再び機能します。 – topherg

+0

編集された記事を表示 – Thariama