65.9K
CodeProject 正在变化。 阅读更多。
Home

htmlArea - 将任何 TEXTAREA 转换为所见即所得编辑器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.95/5 (40投票s)

2002年9月4日

21分钟阅读

viewsIcon

673600

downloadIcon

14754

htmlArea 是 Web 表单中 TEXTAREA 字段的免费所见即所得编辑器替换。

Sample screenshot

目录

引言

安装/设置

常见问题解答

已知错误和问题

引言

htmlArea 是什么?

htmlArea 是一款免费的所见即所得(所见即所得)编辑器,用于替换 <textarea> 字段。通过在您的网页中添加几行简单的 JavaScript,您可以将普通的 textarea 替换为富文本编辑器,让您的用户可以执行以下操作

  • 将文本格式化为粗体、斜体或下划线
  • 更改字体、大小、样式和颜色
  • 左对齐、居中或右对齐段落
  • 创建项目符号或编号列表
  • 缩进或取消缩进段落
  • 插入水平线
  • 插入超链接和图片
  • 查看他们正在编辑的原始 HTML 源代码
  • 等等……

htmlArea 的一些有趣功能使其与其他基于网络的所见即所得编辑器区别开来,如下所示

  • 它轻巧、加载速度快,只需一行 JavaScript 即可将普通的 textarea 转换为富文本编辑器。
  • 它与旧版或不支持的浏览器 100% 向后兼容(它们会获得原始的 textarea 字段)。
  • 它是免费的,可以集成到任何免费或商业程序中。
  • 它适用于任何编程语言(ASP、PHP、Perl、Java 等)。
  • 它用简单的 JavaScript 编写,可以轻松查看、修改或扩展。
  • 当用户离开页面然后点击浏览器中的“后退”时,它会记住输入的内容。
  • 由于它替换了现有的 textarea,因此不需要大量代码即可将其添加到您的页面(只需一行)。
  • 我们提过它是免费的吗?:)

它真的是免费的吗?有什么陷阱?

是的!它真的是免费的。您可以使用它、修改它、将其与您的软件一起分发,或者用它做任何您喜欢的事情。

浏览器有什么要求?

htmlArea 需要在 Windows 上运行 Internet Explorer 5.5 或更高版本。这是因为它使用了 IE5.5 中的一些高级功能,这些功能在其他浏览器中尚不可用。但是,它确实与其他浏览器向后兼容。它们将获得一个普通的 textarea 字段,而不是所见即所得编辑器。

我能看到一个例子吗?

当然,请确保您在 Windows 上使用 IE5.5 或更高版本,并查看下方。

这是一个普通的 <textarea> 字段。

这是一个使用 htmlArea 转换的 <textarea>(只需一行 JavaScript 代码)。

在哪里可以找到更多信息、下载最新版本以及与其他 htmlArea 用户交流?

您可以在 htmlArea 主页上找到有关 htmlArea 的更多信息并下载最新版本,您还可以在 htmlArea 论坛中与其他 htmlArea 用户交流并发布您的评论或建议。

安装/设置

如何将 htmlArea 添加到我的网页?

很简单,首先您需要将 htmlArea 文件上传到您的网站。只需按照以下步骤操作

  1. htmlArea 主页下载最新版本。
  2. 将文件解压到您的本地计算机(确保保持压缩包中包含的目录结构)。
  3. 在您的网站上创建一个名为 /htmlarea/ 的新文件夹(确保它不在 cgi-bin 内部)。
  4. 将所有 htmlArea 文件从您的本地计算机传输到您网站上的 /htmlarea/ 文件夹中。
  5. 使用浏览器打开示例页面 /htmlarea/example.html,以确保一切正常。

一旦 htmlArea 部署在您的网站上,您只需将一些 JavaScript 添加到您想要添加所见即所得编辑器的任何页面中。以下是如何操作。

  1. 打开您想要添加所见即所得编辑器的页面。将以下内容添加到 HTML 文档的 <head></head> 顶部的页面中。
    <script language="Javascript1.2"><!-- // load htmlarea
    _editor_url = "";                     // URL to htmlarea files
    var win_ie_ver = parseFloat(navigator.appVersion.split("MSIE")[1]);
    if (navigator.userAgent.indexOf('Mac')        >= 0) { win_ie_ver = 0; }
    if (navigator.userAgent.indexOf('Windows CE') >= 0) { win_ie_ver = 0; }
    if (navigator.userAgent.indexOf('Opera')      >= 0) { win_ie_ver = 0; }
    if (win_ie_ver >= 5.5) {
     document.write('<scr' + 'ipt src="' +_editor_url+ 'editor.js"');
     document.write(' language="Javascript1.2"></scr' + 'ipt>');  
    } else { document.write('<scr'+'ipt>function editor_generate() 
                                          { return false; }</scr'+'ipt>'); }
    // --></script>
    如果您将 htmlArea 安装在 /htmlarea/ 以外的任何位置,那么请务必更改 _editor_url 以指向您的 htmlarea 目录(以斜杠“/”结尾)。
  2. 对于您想要更改的每个 <textarea>,将以下代码添加到页面中。
    <script language="JavaScript1.2" defer>
    editor_generate('fieldname');
    </script>
    请务必将“fieldname”更改为您想要更改的 textarea 的名称(不是 id)。
  3. 这样就完成了,在浏览器中打开您的页面,看看它是否有效。如果您遇到任何问题,请继续尝试,并随时访问 htmlArea 论坛

我想更改编辑器设置,如何操作?

虽然只需一行 JavaScript 即可创建 htmlArea 所见即所得编辑器,但您也可以在代码中指定更多配置设置来控制编辑器的工作方式和外观。以下是一些可用设置的示例

<script language="JavaScript1.2" defer>
var config = new Object(); // create new config object

config.width = "90%";
config.height = "200px";
config.bodyStyle = 'background-color: white; font-family: "Verdana";' + 
                   'font-size: x-small;';
config.debug = 0;

// Add additional editor config settings here...

editor_generate('fieldname',config);
</script>

有关更多可添加的配置选项,请参阅下文。如果您不自行指定这些设置,它们都将使用 editor.js 中的默认值。

宽度 指定编辑器的宽度(以像素或百分比表示)。
高度 指定编辑器的高度(以像素或百分比表示)。
bodyStyle 指定编辑器窗口的 CSS 样式,包括颜色、默认字体和大小。请注意,默认字体信息不会保存,它只控制在未应用其他字体格式时文本的显示方式。
debug 如果设置为 1,则显示一个调试字段,其中包含编辑器(原始 HTML 格式)的实际内容,该内容会随着您的输入而更新。

如何更改工具栏上显示的控件?

您可以添加 config.toolbar 配置设置来精确控制工具栏上显示的内容。这是一个示例。

config.toolbar = [
  ['fontname'],
  ['fontsize'],
  ['fontstyle'],
  ['linebreak'],
  ['bold','italic','underline','separator'],
  ['strikethrough','subscript','superscript','separator'],
  ['justifyleft','justifycenter','justifyright','separator'],
  ['OrderedList','UnOrderedList','Outdent','Indent','separator'],
  ['forecolor','backcolor','separator'],
//['custom1','custom2','custom3','separator'],
  ['HorizontalRule','Createlink','InsertImage','htmlmode','separator'],
  ['about','help']
];

方括号控制按钮如何“分组”。您可以擦除或注释掉(通过在行首添加 //)您不想显示的按钮或按钮组。大多数按钮的功能与您预期的大致相同,但这里有一些奇怪的按钮供您参考。

linebreak 在工具栏中添加换行符,此后的所有按钮都在下一行
separator 在按钮之间添加垂直分隔符,有助于在视觉上将按钮分组
customN 这些是自定义按钮,可以由希望扩展 htmlArea 的 JavaScript 程序员定义。

如何更改字体列表中的字体?

有一个 config.fontnames 设置可以控制此功能。请参阅下文。

config.fontnames = {
  "Arial":           "arial, helvetica, sans-serif",
  "Courier New":     "courier new, courier, mono",
  "Georgia":         "Georgia, Times New Roman, Times, Serif",
  "Tahoma":          "Tahoma, Arial, Helvetica, sans-serif",
  "Times New Roman": "times new roman, times, serif",
  "Verdana":         "Verdana, Arial, Helvetica, sans-serif",
  "impact":          "impact",
  "WingDings":       "WingDings"
};

左侧的名称是向用户显示的名称。右侧的字体列表是实际放入代码中字体标签的字体。

如何更改字体大小中的大小?

有一个 config.fontsizes 设置可以控制此功能。请参阅下文。

config.fontsizes = {
  "1 (8 pt)":  "1",
  "2 (10 pt)": "2",
  "3 (12 pt)": "3",
  "4 (14 pt)": "4",
  "5 (18 pt)": "5",
  "6 (24 pt)": "6",
  "7 (36 pt)": "7"
};

右侧的值是用户看到的,左侧的值是实际使用的字体大小。

如何更改字体样式(CSS)列表中的样式?

正如您可能猜到的,有一个 config.fontstyles 设置。请记住,此处定义的样式控制文本在编辑器中的外观。这些样式也必须在您显示使用编辑器创建的内容的任何页面上定义。htmlArea 将保存带有内容的类名,但不会保存其他任何内容。您需要在页面中定义类样式。

config.fontstyles = [{
  name: "headline",
  className: "headline",
  classStyle: "font-family: arial; font-size: 28px;"
},{
  name: "red text",
  className: "saletext2",
  classStyle: ""
}];

name”是向用户显示的名称,“className”是要使用的 CSS 类名,classStyle 定义了编辑器中样式的属性。如果将 classStyle 留空,则必须确保还指定一个包含所有样式信息(和匹配的 classNames!)的外部样式表。有关如何执行此操作,请参阅下一个问题。

如何为我的样式指定外部样式表?

您可以指定一个样式表,以避免为每个类名输入类样式数据。您仍然必须指定您希望可用的 classNames,请参阅上一个问题以获取相关信息。

config.stylesheet = "/style.css";

常见问题解答

htmlArea 的项目目标是什么?

当我们最初启动 htmlArea 项目时,我们对它的工作方式和对我们重要的问题有一些非常具体的目标。这些目标至今仍指导着开发方向,并按优先级顺序如下所列。

  1. 兼容性

    htmlArea 必须始终与旧版和不受支持的浏览器向后兼容。这确保了即使使用旧版和不受支持的浏览器的用户无法使用 htmlArea,他们也始终能够至少在普通的 textarea 中输入文本,就像他们以前一样。htmlArea 还应该通过完全基于 DHTML 和 JavaScript 来兼容尽可能多的编程语言。

  2. 易用性

    htmlArea 需要易于开发人员集成到他们的应用程序中并进行自定义,易于程序员扩展和修改,以及易于最终用户“使用”。这就是为什么您只需要为每个要转换的 textarea 添加一行 JavaScript,以及为什么所有代码都存储在一个易于理解的 JavaScript 文件中。这就是为什么 htmlArea 可以与几乎任何编程语言(ASP、PHP、Perl、Java 等)一起使用,以及为什么工具栏是流线型的、可由开发人员自定义并遵循常见文字处理程序的约定。

  3. 轻量级

    htmlArea 需要快速加载,允许用户以合理的速度执行文字处理功能,并且不会给用户的浏览器带来太大负担。为此,我们已设法将主编辑器程序保持在一个只有 40k 的文件中,并且我们编写编辑器的方式使其对运行它的浏览器资源影响最小。此外,在我们使用弹出窗口执行附加功能时,我们尝试将尽可能多的代码放入弹出窗口中,以便它不会增加基本编辑器的大小。

这个编辑器很棒,它是如何工作的?

htmlArea 基于 Windows 上 Internet Explorer 5.5+ 中的 MSHTML 编辑平台。基本上,Internet Explorer 包含一些功能,通过定义“contentEditable”属性或“designMode”属性,使网页的某些部分可编辑。它还提供了一些内置命令,用于执行常见的网页编辑操作(加粗、斜体、居中、插入图像等)。

htmlArea 构建在 Internet Explorer 提供的功能之上,并添加了自己的用户可定义工具栏、一种在网页中包含所见即所得编辑器(替换文本区域)的简便方法、一种保存用户更改的简便方法,以及许多自己的自定义网页编辑命令。

htmlArea 的实际工作方式是它用一个(用户可定义的)工具栏、一个将“contentEditable”属性设置为 true 的 iframe,以及一个与您原始 textarea 具有相同名称的隐藏字段来替换 textarea,当您修改编辑器中的内容时,该隐藏字段会自动更新。

用户可以输入或修改文本,以及使用键盘快捷键和工具栏按钮对内容执行操作。许多编辑器命令内置于 IE 中,并通过 execCommand 方法调用,但 htmlArea 还包括其他用 JavaScript 编写并存储在 editor.js 文件或弹出窗口(在 /popups/ 文件夹中)中的自定义命令和功能。

你有没有针对 (Netscape, Mozilla, Opera, Mac Ie, 等) 的这个?

没有。这些其他浏览器(包括 Mac 版 IE)都不支持“contentEditable”或使页面中现有内容可编辑的方式。在 JavaScript 中模拟这可能是可行的,但工作量会很大。其他问题包括显示或模拟您在编辑时看到的闪烁 | 条形光标。跨平台 Mozilla 浏览器有一些与添加 contentEditable 功能相关的错误条目,也许将来,可以为该浏览器创建一些东西。

虽然希望渺茫,但您可能需要给微软发一封友善的信,鼓励他们使“contentEditable”功能在 Mac 版 IE 上运行。一旦他们实现了,我们就可以提供它。

为什么 htmlArea 输出的是普通 HTML 而不是 XHTML?你能让它输出 XHTML 吗?

htmlArea 输出的 HTML 是由 Internet Explorer 的内置功能生成的。因此,没有简单的方法让它输出 XHTML。如果我们要这样做,方法是在 IE 输出 HTML 后对其进行解析并将其转换为 XHTML。这是我们希望在某个时候做的事情。

我希望能够从硬盘上传图片,你能添加这个功能吗?

不。我们希望 htmlArea 兼容尽可能多的编程语言。因为它是在客户端 JavaScript 中编写的,所以它应该适用于任何编程语言。如果我们开始添加特定于语言的功能,htmlArea 对许多人的用处就不会那么大。话虽如此,有很多免费的“文件上传”脚本可用,并且 htmlArea 确实包含一个名为 editor_insertHTML() 的函数,用于插入文本或 HTML 标签。如果您想编写自己的程序来完成此操作,那应该不会太难。或者,您可以在论坛中查看是否有人已经有了。

我希望能够 <在此处插入想法>,你能添加这个功能吗?

也许,也许不。如果它是一个很好的功能并且符合我们项目的目标,我们很可能会考虑它。最好的办法是将您的建议发布到 论坛。至少,我们会尝试给您一些建议并指出正确的方向。最好的情况是,您可能会发现其他人已经实现了您希望的功能。

我可以更改工具栏/按钮颜色吗?

是的,只需在 editor.js 中搜索“buttonface”和“buttonhighlight”,然后将它们更改为您喜欢的任何颜色。如果您以前没有听说过这些颜色,那是因为它们是特殊的 Windows 颜色,与用户为桌面选择的任何颜色方案相匹配。例如,如果有人将桌面颜色方案更改为“lilac”,则所见即所得编辑器工具栏和按钮将与该主题匹配。试试看,它真的很酷。

我喜欢 htmlArea,我能为这个项目做些什么吗?

你能做的第一件也是最简单的事情就是帮助我们;在你的网站上给我们一个链接。越多的人能发现 htmlArea,它就会越好。

你能做的第二件最好的事情是参与我们的 论坛,并发布一两条消息来帮助其他 htmlArea 用户(或者你自己学习一些新东西)。

最后,您想分享的任何代码改进也肯定会受到欢迎。

当我在同一个页面上拥有多个 htmlArea 编辑器时,为什么工具栏按钮加载时间这么长?

这是 Internet Explorer 的一个错误/功能。htmlArea 动态更新您的页面内容,将 textarea 替换为 WYSIWYG 编辑器。在 Internet Explorer 中,当您在页面加载后更新页面内容并插入图像时,即使图像在缓存中,它也会从服务器加载图像。这意味着如果您在同一个页面上有 10 个 htmlareas,则“粗体”工具栏按钮将加载 10 次。

解决此问题的一种方法是将所有 editor_generate() 脚本移动到页面底部,将它们组合成一个 script 标签,并从该 script 标签中删除“defer”属性。这将使它们都在页面加载完成时运行,并且将使用缓存图像。这意味着,浏览器只需加载每个图像一次。

已知错误和问题

撤销/重做不起作用

每次您在编辑器中进行更改时,我们都会更新一个隐藏字段,以便在您提交表单时提交该隐藏字段。在 Internet Explorer 中,撤销/重做的工作方式似乎是每次您使用 JavaScript 设置表单元素的值或以其他方式更改页面时,它都会重置撤销缓冲区。因此,浏览器内置的撤销/重做功能不起作用。我们希望将来实现我们自己的撤销/重做功能。

相对路径被转换为绝对路径

Internet Explorer 倾向于将相对路径转换为绝对路径。我们见过一些 WYSIWYG 编辑器的实现比其他实现“更好地”维护相对路径,但某些操作(例如拖放等)仍然将相对路径转换为绝对路径。我们希望在将来的版本中找到此问题的解决方法。

HTML 头部信息(例如:<head>、<body> 等)未被保留

这是由于 Internet Explorer 及其编辑器的工作方式造成的。编辑器本身已经有一个 HTML 头部,因此插入另一个会导致浏览器混淆,并且内容会被丢弃。最好的解决方案是为 HTML 头部信息设置另一个纯文本 textarea 字段。

某些标签(例如:noframes、noscript 等)不会被保留

这是 Internet Explorer 工作方式的结果。它似乎会丢弃它不需要显示的某些标签。由于 htmlArea 从浏览器中读取内容,因此它无法保留浏览器“丢弃”的内容。

htmlArea 不适用于具有相同名称的多个 Textarea

如果您在同一页面上有两个或更多具有相同名称的 textarea,并且您尝试将其中一个或多个转换为所见即所得编辑器,htmlArea 将不起作用。这是因为 htmlArea 在整个页面中(而不仅仅是在特定表单中)按名称查找 textarea。目前没有解决此问题的方法。我们希望在未来的版本中解决此问题。

当我在安全 (SSL) Https:// 页面上使用 Htmlarea 时,为什么会收到“非安全项目”警告?

这是 Internet Explorer 的一个错误/功能。即使您收到不安全警告,您的表单内容仍应安全提交。

htmlArea 使用一个 <iframe> 来包含编辑器,因为 iframe 的内容不是从安全站点加载的,Internet Explorer 认为 iframe 不安全。问题是,iframe 不会从任何站点加载任何内容,它是空白的,甚至没有 src 属性。我们只是创建一个空的 iframe,然后使用 JavaScript 更新它。我们希望在未来的版本中修复此问题。

注意:论坛中有一个巧妙的解决方法 此处。唯一的问题是它可能导致后退按钮无法按预期工作(它首先回到 iframe 中)。

更改日志

版本 2.03 (发布日期:2002年12月17日)

  • 新许可证 - 切换到“BSD 风格”软件许可证。“关于此编辑器”按钮不再需要。
  • Readme 更新 - 轻微更新、拼写和语法修复。

版本 2.02a (发布日期:2002年12月5日)

  • 修复了 readme.html 示例代码中“如何将 htmlArea 添加到我的网页?”下的错误。

版本 2.02 (发布日期:2002年12月5日)

错误修复(感谢论坛中的每个人贡献和报告错误!)

  • 修复嵌套脚本标签错误(感谢 Phil Revill)

新功能

  • 添加了“replaceNextlines”配置选项,用于在输出时将换行符替换为空格
  • 添加了“plaintextInput”配置选项,用于在输入时将换行符替换为 <br> 标签

版本 2.01 (发布日期:2002年12月3日)

错误修复(感谢论坛中的每个人贡献和报告错误!)

  • 修复了非 IE5.5+ 浏览器“函数未找到”错误(感谢 slowhand)
  • 弹出编辑器 - 修复了弹出窗口启动时导致的 JavaScript 错误(感谢 slowhand 和 Chlorel)
  • 弹出编辑器 - 修复了工具栏“linebreak”错误(感谢 fbridge9 和 RekiM)

文档更新

  • readme.html 添加了两个新问题
    • 当我在同一个页面上拥有多个 htmlArea 编辑器时,为什么工具栏按钮加载时间这么长?
    • 当我在安全 (SSL) https:// 页面上使用 htmlarea 时,为什么会收到“非安全项目”警告?

版本 2.00 (官方发布) (发布日期:2002年11月25日)

新 JavaScript 函数

  • editor_getHTML(objname) - 返回编辑器的 HTML 内容
  • editor_setHTML(objname) - 设置编辑器的 HTML 内容
  • editor_appendHTML(objname) - 将 HTML 内容添加到编辑器

新功能

  • 弹出式“全屏”编辑器现在具有最小化和最大化按钮(从 ModalDialog 切换到弹出窗口)

错误修复(感谢论坛中的每个人贡献和报告错误!)

  • “创建表格”弹出窗口现在创建具有正确列数和行数的表格(感谢 Corey)
  • 启用“CSS 样式下拉菜单”时,点击图像不再导致错误(感谢 Virrdo)
  • 修复了阻止外部样式表正常工作的错误(感谢 slowhand)
  • 修复了 Mozilla 1.0 中的 JavaScript 错误(感谢 slowhand)
  • 将浏览器检测代码移至编辑器页面,以防止旧版浏览器出现 JavaScript 错误,并防止在不需要时加载编辑器。
  • 提交空 htmlarea 现在提交空字符串 "" 而不是 "<p>&nbsp;</p>"
  • 弹出式“全屏”编辑器在“<>”html 模式更改时不再产生错误

版本 2.00 (beta2) (发布日期:2002年10月16日)

新文档

  • 创建了新的 readme.html,包含安装说明、常见问题和大量信息

新功能

  • 添加了对样式表的支持
  • 使窗口放大/缩小功能正常工作
  • 使上下文菜单正常工作(默认仍禁用,需要更多代码来实现功能)
  • 允许用户从调用页面更改内部配置中的任何选项
  • 添加了在表单提交时调用的 _editor_filterOutput 函数
  • 添加了插入表格按钮

错误修复/优化

  • 将相关文件组织到目录中
  • 修复了当用户在浏览器中按下返回按钮时,htmlarea 有时无法显示最后输入内容的错误。
  • 将“关于”窗口移到单独的文件中,以减小编辑器大小

版本 2.00 (beta1) (发布日期:2002年8月19日)

视觉变化

  • 添加了工具栏 UI 按钮的鼠标悬停/鼠标离开事件和样式
  • 更新工具栏以占用更少空间并更小
  • 在 HTML 字体大小旁边显示磅值(例如:7 (36px)
  • 将“关于此编辑器”图标更改为“i”
  • 创建了一个帮助弹出窗口(内容仍需编写)。
  • 在关于页面中添加了版本号。

代码更改

  • script 标签中添加了“defer”,以防止编辑器在页面加载完成之前创建
  • 简化了需要添加到包含编辑器的页面中的头部
  • 使用 _editor_url 生成脚本包含标签,以便用户无需两次输入 URL
  • 将编辑器工具栏按钮的 CSS 移至 editor.js
  • 切换到使用对象将配置参数传递给 editor_generate
  • 一般代码改进、优化和重组
  • 为将来使用添加了按键事件的钩子

新功能

  • 添加了 CSS 样式类名的下拉菜单
  • 添加了更多配置选项,包括
  • 选择要显示的工具栏元素的能力
  • 指定工具栏元素顺序的能力
  • 为下拉菜单指定字体、大小和 CSS 样式的能力
  • 设置编辑器窗口中使用的默认字体和样式的能力
  • 调试标志,让您始终查看所见即所得字段的源代码
  • 添加了更多示例代码和注释,展示如何添加自定义按钮

Bug 修复

  • 修复了手动指定高度/宽度时导致的错误(由 jpeto 报告,谢谢!)
  • “关于此编辑器”窗口现在在文本编辑模式下工作

版本 1.05 (发布日期:2002年8月28日)

  • 添加了对名称中带有下划线 (“_”) 的文本区域的支持。

版本 1.04 (发布日期:2002年8月27日)

  • 进一步的速度改进(所见即所得编辑器在旧计算机上现在快得多)。
  • 一般代码改进和优化。

版本 1.03 (发布日期:2002年8月26日)

  • 仅测试版发布

版本 1.02 (发布日期:2002年8月21日)

  • 添加了 editor_insertHTML() 函数。开发人员现在可以轻松添加插入 HTML 或用 HTML 包裹选定文本的按钮
  • 删除了不必要的调试代码和注释,以减小 editor.js 文件大小(和加载时间)

版本 1.01 (发布日期:2002年8月20日)

  • 优化代码以提高速度(所见即所得编辑器现在快得多)
  • 添加了额外的事件处理程序以在鼠标事件上更新 UI

版本 1.00 (发布日期:2002年8月19日)

  • 首次发布

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.