openWYSIWYG-Editor在回发时消失

时间:2010-11-08 10:10:59

标签: openwysiwyg

每次第一次加载页面时它都能正常工作。然而,当我们进行回发时,编辑器只消失了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函数。但这不起作用。

还有其他选择吗?请建议。

1 个答案:

答案 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);
}