0

每次页面第一次加载时它都能正常工作。但是,当我们进行回发时,编辑器会消失,只显示文本区域。回发是由于页面上的下拉菜单而发生的。

<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 函数。但这不起作用。

有没有其他选择?请建议。

4

1 回答 1

0

有几种方法可以将编辑器附加到文本区域。

WYSIWYG.attach('all', 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);
}
于 2011-08-24T03:30:55.650 回答