CSDN博客

img lhelper

所见即所得编辑器 aynHTML 大全——(一)如何部署、嵌入、装载动态内容

发表于2003/11/27 0:37:00  2662人阅读

分类: 技术文章

 

所见即所得编辑器 aynHTML 系列文章(一)如何部署、嵌入、装载动态内容

aynHTML 简介

aynHTML 是一款基于HyperText Component 技术的所见即所得的在线编辑器,支持表格,图像,样式表,等等,目前只能运行在 5.5 (或更高版本)的 Internet Explorer 浏览器中。
目前 aynHTML 的最高版本是v0.20b(该版本尚存在一些bug),我们使用的版本是v0.18b
下面是aynHTML 官方网站的一个在线demo
http://www.aine.be/aynhtml/demo.html

这个在线demo 的反应速度可能会有点慢(至少曾经的一个版本是这样的),这是因为aynHTML有一个选项默认是打开的,只要关闭这个选项编辑器的处理速度就会有非常明显的提升。在这里先向大家简单介绍一下,见下面一段代码:

<AI:aiButton id="btnOutdent" contentEditable="false" cmd="Outdent" alt="减少缩进量" src="img/ico_outdent.gif" autoOff="1" check="1" />

上面一段代码位于aynHTML的核心文件aynHTML/aiEditor.htc 中,是用来描述编辑器的一个按钮(减少缩进量)的。默认情况下check 的值为1,意思是自动check 编辑器中焦点所在区域的状态,如字体大小、是否为粗体、斜体、对齐方式等等,这会大大降低编辑时的速度。
注:
1).aynHTML 比较适合对web 页面进行简单的在线编辑,并不适合用于复杂的美工处理。
2).aynHTML 编辑器不能被嵌入Frameset 中,如果被嵌入Frameset 的话,键盘上的快捷键(如Ctrl-v,粘贴功能)将全部失效;

如何把aynHTML 编辑器嵌入到页面中

如何部署aynHTMl

为了把 aynHTML editor 嵌入到 web 页面中,首先我们需要把aynHTML 的整个文件夹复制到 Web 站点的某个目录下(如程序文件的同级目录);然后在需要嵌入编辑器的页面中中加入 <AI:aiEditor> </AI:aiEditor> 两个标记,并在<AI:aiEditor> 标记中告诉编辑器该文件夹的相对位置,如下例所示
<html xmlns:AI>
<head>
<?import namespace="AI" implementation="aiEditor.htc" />
</head>
<body>
    <AI:aiEditor id="aiEditor" path="aynHTML/" load_method="inline">
        <p align="center"><b>Welcome to aynHTML Editor !</b></p>
    </AI:aiEditor>
    <!-- <AI:aiEditor> 与 </AI:aiEditor> 两个标记中间的内容将被格式化后显示在编辑器中 -->
</body>
</html>
下面一节我们将详细介绍如何定制aynHTML 编辑器。

注:
1).为了使aynHTML 编辑器正常运行,我们必须为其( <AI:aiEditor> </AI:aiEditor> )声明 AI 的 namespace,如上面代码中的

  <?import namespace="AI" implementation="aiEditor.htc" />

[注:
dreamweaver 无法正确解释该 namespace 申明,当用dreamweaver 打开包含该声明的页面时会导致后面的一个标记被解释错误,如下面一段代码:

<!-- aynhtml editor -->
<?import namespace="AI" implementation="aynHTML/aiEditor.htc" />
<link href="aynHTML/external.css" rel="stylesheet" type="text/css">
<!-- aynhtml editor -->

将会被解释为:
<!-- aynhtml editor -->
<?import namespace="AI" implementation="aynHTML/aiEditor.htc" />
link href="aynHTML/external.css" rel="stylesheet" type="text/css">
<!-- aynhtml editor -->
其中的 <link/> 标记被吞掉了一个'<'
]

如何定制 aynHTML

标记 <AI:aiEditor> 中的属性是用来定义 editor 的属性和操作的,如:
<AI:aiEditor id="aiEditor"
    color="buttonface"
    content =""
    font="宋体 ,楷体_GB2312 ,黑体 ,仿宋 ,Arial ,Verdana , Tahoma, Times New Roman,Georgia"
    font_size="8,9,10,11,12,13,14,16,20,24,48"
    height="400"
    hide_btn="open,save,image"
    load_method="inline"
    load_url=""
    link_get="aynHTML/sample/text/links.xml"
    open_method="default"
    palette="web, system"
    path="aynHTML/"
    style_import="1"
    stylesheet="aynHTML/internal.css"
    width="600">
....
</AI:aiEditor>
其中:
color       : 编辑器的界面颜色
content     :用来获得和设置编辑器的内容
font        :字体列表
font_size   :字体大小列表
height      :编辑器的高度
load_method :编辑器装载内容的方式(inline 是缺省的选项,意思是装载<AI:aiEditor> 与 </AI:aiEditor> 两个标记中间的内容)
load_url    :如果指定 load_method 为 html的话,则表示住在某个html页面,load_url 就是这个页面的链接地址
link_get    :aynHTML 可以以配置文件维护一个文件列表,用户可以选择其中一个文件进行编辑,link_get 是用来定义配置文件的路径的
open_method :与工具栏中打开按钮相关联的方法
palette     :调色板中的色彩样式
path        :aynHTML 编辑器核心文件的路径,该路径是相对于嵌入页面的相对路径
style_import:指示编辑器是否搜索所嵌入页面中的<style> 和 <link> 标记,缺省值为0
stylesheet  :应用于编辑器的样式表
width       :编辑器的宽度


如何在 editor 所嵌入的页面中读取 editor 中的 html 内容

1).如果 html tag 是直接嵌入在 <AI:aiEditor id="aiEditor"> </AI:aiEditor> tag 内, 则可以通过 aiEditor.innerHTML 或 aiEditor.innerText 来得到所要的内容。

2).如果 html 是通过 copy paste 形式填充到 editor 窗口中的,则无法用 aiEditor.innerHTML 或 aiEditor.innerText 读取 editor中的内容,目前的解决方法为:在 aiEditor.htc 中添加一个读取 editor 窗口中内容的方法 getContent(),如下所示:
<public:component tagName="aiEditor">
    <public:defaults viewLinkContent />
    ...
    <public:method name="getContent" internalname="c_get_content" />
</public:component>

<script language="javascript">
...
/* the custom method invoked by the extra aiEdirot */
function c_get_content() {
        return mode == 'html' ? aiEdit.innerHTML : aiEdit.innerText;
}
...
</script>

这样我们就可以在 editor 的外面读取 editor 中的内容了, 如:
<input type="button" value="getContent" onclick="javascript:alert(aiEditor.getContent());">

如何让编辑器显示动态内容

要在编辑器中编辑从数据库中取出的动态内容,只需要把<AI:aiEditor> 的属性 load_method 设置为 inline,然后把动态取得的内容插入<AI:aiEditor> 和 </AI:aiEditor> 两个标记中间就可以了。

简单实例:
<html xmlns:AI>
<head>
<?import namespace="AI" implementation="aiEditor.htc" />
</head>
<body>
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open Application("newsconn")
sql = "SELECT newscontent FROM news_detail WHERE newsid='"&request("newsid")&"'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql,conn,1,2
%>
<AI:aiEditor id="aiEditor"
    color="buttonface"
    content =""
    font="宋体 ,楷体_GB2312 ,黑体 ,仿宋 ,Arial ,Verdana , Tahoma, Times New Roman,Georgia"
    font_size="8,9,10,11,12,13,14,16,20,24,48"
    height="400"
    hide_btn="open,save,image"
    load_method="inline"
    load_url=""
    link_get="aynHTML/sample/text/links.xml"
    open_method="default"
    palette="web, system"
    path="aynHTML/"
    style_import="1"
    stylesheet="aynHTML/internal.css"
    width="600">
    <%=rs("newscontent")%>
</AI:aiEditor>
<%
rs.Close
conn.Close
Set rs = nothing
Set conn = nothing
%>
</body>
</html>

在线资源和参考文档

http://www.aine.be/aynhtml/
http://www.aine.be/aynhtml/doc/aiEditor.html
http://www.aine.be/aynhtml/doc/aiTree.html
http://aynhtml.sourceforge.net/
http://sourceforge.net/project/aynhtml/

作者简介

吕克让 工学学士 2002年毕业于北京工业大学计算机学院
他最喜欢的花是文竹;最想做的是成为像 Richard Stallman 一样优秀的 Hacker。最近他正在学习如何使用 OpenCMS 管理网站内容。你可以通过 lvkrnewer@hotmail.com 和他取得联系。
0 0

相关博文

我的热门文章

img
取 消
img