中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > LOTUS > 开发心得
解析notes自带的rtf javaapplet编辑器
作者:未知 时间:2005-07-22 13:39 出处:Lotus中文技术站 责编:chinaitpower
              摘要:解析notes自带的rtf javaapplet编辑器
在写b/s应用的时候,经常有检查域有效性的需求。我们一般的做法是用写javascript函数检查域的有效性,通过后再提交,不通过则提示出错。
现在有这样一个需求,就是在b/s上检查notes自带的rtf javaapplet编辑器内容。也就是说我们得想办法用js访问到这个notes编辑器。

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

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GB2312">

<SCRIPT LANGUAGE="JavaScript">
<!--
document._domino_target = "_self";
function _doClick(v, o, t, h) {
var form = document._rtftest;
if (form.onsubmit) {
var retVal = form.onsubmit();
if (typeof retVal == "boolean" && retVal == false)
return false;
}
var target = document._domino_target;
if (o.href != null) {
if (o.target != null)
target = o.target;
} else {
if (t != null)
target = t;
}
form.target = target;
form.__Click.value = v;
if (h != null)
form.action += h;
form.submit();
return false;
}

function _getEditAppletData(){
var form = document._rtftest;
for(i=0;i<form.elements.length;i++) {
if(form.elements[i].editorApplet != null) {
form.elements[i].value = form.elements[i].editorApplet.getText("text//html");
}
}
return true;
}
// -->
</SCRIPT>
</HEAD>
<BODY TEXT="000000" BGCOLOR="FFFFFF">

<FORM onSubmit="_getEditAppletData(); return true;" METHOD=post ACTION="/application/test/William/test.nsf/rtftest?OpenForm&Seq=1" NAME="_rtftest">
<INPUT TYPE=hidden NAME="__Click" VALUE="0">
<APPLET NAME="lnaMYRTF" CODE="lotus.notes.apps.editorapplet.EditorApplet.class" CODEBASE="/domjava" ARCHIVE="editor.cab" ALT="Editor" TITLE="rtftt" WIDTH="100%" HEIGHT="100%" MAYSCRIPT>
<PARAM NAME="cabbase" VALUE="editor.cab">
<PARAM NAME="locale" VALUE="zh-cn">
</APPLET>

<INPUT TYPE=hidden NAME="MYRTF">
<SCRIPT LANGUAGE="JavaScript">
<!--
document._rtftest.MYRTF.editorApplet = document.lnaMYRTF;
// -->
</SCRIPT>
</FORM>
</BODY>
</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{1,}/, "" ).replace( /\s{1,}$/, "" )=="")
至此问题解决。

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

结论:
    1. 很简单的问题被我写这么长,真是佩服自己*^_^*
    2. 对domino自带的东西用html查看源文件,可能对解决问题会有帮助。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有