openWYSIWYG-редактор исчезает при обратной передаче
Он работает правильно каждый раз, когда страница загружается в первый раз. Однако когда мы делаем Postback, редактор исчезает только с текстовой областью. Обратная передача происходит из-за выпадающего списка на странице.
<asp:TextBox runat="server" ID="TBClosingInstructions" TextMode="MultiLine" Rows="8" Columns="40" TabIndex="2" Font-Name="Verdana"></asp:TextBox><script language="JavaScript">generate_wysiwyg('TBClosingInstructions');</script>
Я бы хотел, чтобы редактор оставался даже после обратной передачи. Я пробовал следующий код
if (Page.IsPostBack)
{
this.ClientScript.RegisterStartupScript(this.GetType(), "script", "<script language=\"JavaScript\">generate_wysiwyg('TBClosingInstructions');</script>", true);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ClientScript", "<script language=\"JavaScript\">generate_wysiwyg('TBClosingInstructions');</script>", true);
}
Пробовал и registerStartupScript, и registerClientScriptBlock по отдельности, чтобы связать функции javascript в каждой обратной передаче. Но это не работает.
Есть ли альтернатива? Пожалуйста, предложите.
1 ответ
Есть несколько методов, которые прикрепляют редактор к текстовой области.
WYSIWYG.attach ("все", mysettings);
Это то, что я использовал, и это работало хорошо, если ваш контент / форма не были загружены динамически.
Глядя на исходный код, он присоединяется к событию загрузки. Вероятно, поэтому он не привязан.
WYSIWYG_Core.addEvent(window, "load", function generateEditor() { WYSIWYG._generate(id, settings); });
WYSIWYG.attachAll (MySettings);
Я обнаружил, что это работает (все текстовые области), снова просматривая исходный код, он ищет все текстовые области в DOM и не привязывается к событию.
var areas = document.getElementsByTagName("textarea");
for (var i = 0; i < areas.length; i++) {
var id = areas[i].getAttribute("id");
if (id == null || id == "") continue;
this.setSettings(id, settings);
WYSIWYG_Core.includeCSS(this.config[id].CSSFile);
WYSIWYG._generate(id, settings);
}