Telerik RadEditor存在一个已知问题导致奇数字符插入,如documented here。
解决方法需要插入客户端脚本来去除OnClientSubmit事件中的违规字符。
我们在很多地方使用这个控件,并且在我们的皮肤文件中定义了三种样式。我们还在RadEditor中从我们称为RichEdit的自定义控件派生自定义控件。
问题是 - 这种方法是否可以保证我们的RichEdit控件的所有实例都能收到所需的客户端事件?
1)在RichEdit.cs OnLoad中,注册包含所需javascript函数的客户端脚本块 2)在皮肤文件中,将所需的OnClientSubmit方法调用添加到每个皮肤?
所以 - 它会起作用吗?如果没有,我需要做什么?
答案 0 :(得分:-1)
答案是肯定的。
在页面加载部分中添加对此方法的调用:
private void AddRichEditGarbageCharacterWorkaround()
{
string scriptName = "RadEditorOnClientSubmit";
Type csType = GetType();
ClientScriptManager csm = Page.ClientScript;
if (!csm.IsClientScriptBlockRegistered(csType, scriptName))
{
StringBuilder sb = new StringBuilder();
sb.Append("<script type=\"text/javascript\">");
sb.Append("\tfunction RadEditorStripGarbage(editor, args) {");
sb.Append("\t\tvar html = editor.get_html();");
sb.Append("\t\thtml = html.replace(/\u200b/g, \"\");");
sb.Append("\t\teditor.set_html(html);");
sb.Append("\t\t}");
sb.Append("</script>");
csm.RegisterClientScriptBlock(csType, scriptName, sb.ToString());
}
}
并将其添加到皮肤:
<nt:RichEdit runat="server" SkinID="SpellCheckOnly" ...
OnClientSubmit="RadEditorStripGarbage" >
成功地将代码和钩子添加到每个实例。