每次第一次加载页面时它都能正常工作。然而,当我们进行回发时,编辑器只消失了textarea。 由于页面上有下拉列表,发生了回发。
<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函数。但这不起作用。
还有其他选择吗?请建议。
答案 0 :(得分:0)
有几种方法可以将编辑器附加到textarea。
WYSIWYG.attach('all',mysettings);
如果您没有动态加载内容/表单,这就是我正在使用的功能。
查看它附加到load事件的源代码。这可能就是它没有被附加的原因。
WYSIWYG_Core.addEvent(window, "load", function generateEditor() { WYSIWYG._generate(id, settings); });
<强> WYSIWYG.attachAll(mySettings); 强>
我发现这个有效(所有textareas),再次查看它在DOM中查找每个textarea的源代码,并且不会附加到事件。
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);
}