解析notes自带的rtf javaapplet编辑器

在写b/s应用的时候,经常有检查域有效性的需求。我们一般的做法是用写javascript函数检查域的有效性,通过后再提交,不通过则提示出错。建一个最简单的表单,包含一个用javaapplet形式显示的 rtf域,名为MYRTF。

在写b/s应用的时候,经常有检查域有效性的需求。我们一般的做法是用写javascript函数检查域的有效性,通过后再提交,不通过则提示出错。
现在有这样一个需求,就是在b/s上检查notes自带的rtf javaapplet编辑器内容。也就是说我们得想办法用js访问到这个notes编辑器。

建一个最简单的表单,包含一个用javaapplet形式显示的 rtf域,名为MYRTF。在web上预览,查看源文件得到如下html代码:





















可以看到 domino为MYRTF域产生了两个元素。一个名为lnaMYRTF的APPLET和一个名为MYRTF的hidden input。并且通过js语句将这两个元素关联起来( document._rtftest.MYRTF.editorApplet = document.lnaMYRTF )。

以上这些对我们来说只是表面现象,我们关心的问题在js函数 _getEditAppletData()中得到解答。我们只要使用applet的 .getText("text//html") 方法就可以得到applet的内容了。但是,用这种方法的得到的是rtf域中带格式的html内容(相当于innerHTML),如果我们想得到不带格式的文本内容可以用.getText("")。
以下就是我用来判断rtf编辑器是否为空的js语句: Empty=(obj.editorApplet.getText("").replace( /^s/, "" ).replace( /s$/, "" )=="")
至此问题解决。

回过头再看html源文件,我们可以看到domino对表单提交的处理。表单在提交时调用 _getEditAppletData()函数寻找所有 editorApplet 关联的字段,然后将对应applet中的带格式的html内容赋值给对应字段,然后继续提交工作。

转载于:https://www.cnblogs.com/hannover/archive/2012/01/21/2328656.html

你可能感兴趣的:(解析notes自带的rtf javaapplet编辑器)