Javascript实例教程(19) 使用HoTMetal(4)


Posted in Javascript onDecember 23, 2006
HoTMetal中使用javascript

4. 怎样编写文档格式的脚本

下面举个宏的例子:根据预定义的页面的布置准则来格式化文档。为了观察这个宏的效应,请关闭Enable Source Layout(允许源程序布局)按钮,具体从菜单中选择Tools(工具)->Customization(定制)。我们首先打开应用程序来初始化一些全局的变量。另外宏的名字必须为n_Application_Open,具体的代码如下:

<MACRO name="On_Application_Open" lang="JScript"><![CDATA[

var viewWYSIWYG = 0;

var viewTagsOn = 1;

var viewSource = 2;

]]></MACRO>

这个宏必须在打开HoTMetaL应用程序的时候才被调用。它唯一的目的就是定义三个常数,这些常数用于其它的宏。这些常数只是代表了三个相应的HoTMetaL视图。操作HoTMetaL的编辑窗口的左边按钮边角上的窗口标签,你可以看到WYSIWYG(即所见即所得)视图,TagsOn视图和源程序视图。

下面得宏是检查当前视图是否是源视图并且根据预定义的准则格式化整个文档。如果视觉图不是源视图,一个消息就会打印出来显示给用户,并且告诉用户切换视图,代码如下:

<MACRO name="Format Current Document" lang="JScript" id="153" desc="Apply source layout to entire document">

<![CDATA[

if (ActiveDocument.ViewType == viewSource) {

ActiveDocument.Layout();

}

else {

Application.Alert("Applying source layout only works in source view.\nSwitch to source view and try again.");

}

]]></MACRO>

这里要注意,我们在这里已经使用了两个HotMetaL的对象:ActiveDocument 和 Application。这个Layout()方法格式化了当前文档。而Alert()方法弹出了一个警告方框。
好吧,现在让我们来测试一下这个宏。请在HotTMetaL中打开一个文档并将视图切换到源程序视图。你可以在ProgGuide目录中选择其中一段。并且通过使用Tools(工具)->Customization(定制)关闭Enable Source Layout按钮。接着将其中一行用加入空格往右移,再从工具菜单中调用宏对话框。这时会展现出定义在HotMetaL.mcr文件的宏的列表。然后运行Refresh Macros宏来装载你刚才编辑的新的宏。你将会看到Format Current Document (格式当前文档)宏。你可以运行它并且注意那个缩进的行回到它的原位置。接下来我们测试一下Alert()方法。现在将视图切换到TagsOn视图并再次运行宏,会弹出如图1的对话框:

Javascript实例教程(19) 使用HoTMetal(4)

(图1)

现在假设你想格式化文档中所选择的部分。这个请求的宏(称为Format Current Selection)跟上面所述的宏(Format Current Document)很类似。它们之间的不同只是在:Format Current Document中 Layout()方法是操作ActiveDocument 对象,而Format Current Selection中 Layout()方法是操作Selection对象:

<MACRO name="Format Current Selection" lang="JScript" id="53" desc="Apply source layout to the current selection">

<![CDATA[

if (ActiveDocument.ViewType == viewSource) {

Selection.Layout();

} else{

Application.Alert("Applying source layout only works in source view.\nSwitch to source view and try again.");

}

]]></MACRO>
下面让我们好好看看上面这个宏是如何工作的。我们在打开的文档中缩进了两行。第一行是以”does not specify”开头的,而另外一句是以"referred to in this ma:"开头的。如图2所示:

Javascript实例教程(19) 使用HoTMetal(4)

(图2)

现在我们选择三行,这三行包括了以"does not specify:"开头的行,如图3所示:

Javascript实例教程(19) 使用HoTMetal(4)

(图3)

最后我们点击中在窗口左上角上的绿色箭头,接着宏的名字(Format Current Selection)就显示在下拉菜单的窗口中,如图4所示:

Javascript实例教程(19) 使用HoTMetal(4)

(图4)

值得一提的是,被选择的行已经被格式化为原来的段落边界。以"referred to in this ma"为开头的第二行保持缩进状态而没有被格式化。

Javascript 相关文章推荐
遍历jquery对象的代码分享
Nov 02 Javascript
载入jQuery库的最佳方法详细说明及实现代码
Dec 28 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
Apr 02 Javascript
使图片旋转的3种解决方案
Nov 21 Javascript
javascript中style.left和offsetLeft的用法说明
Mar 07 Javascript
Angular中的Promise对象($q介绍)
Mar 03 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
Jun 01 Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
小程序清理本地缓存的方法
Aug 17 Javascript
详解webpack2异步加载套路
Sep 14 Javascript
JS 自执行函数原理及用法
Aug 05 Javascript
Javascript实例教程(19) 使用HoTMetal(3)
Dec 23 #Javascript
Javascript实例教程(19) 使用HoTMetal(2)
Dec 23 #Javascript
Javascript实例教程(19) 使用HoTMetal(1)
Dec 23 #Javascript
用于自动添加Digg This!按钮的JavaScript
Dec 23 #Javascript
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
Dec 22 #Javascript
获取Javscript执行函数名称的方法
Dec 22 #Javascript
在Javascript中定义对象类别
Dec 22 #Javascript
You might like
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
php模板函数 正则实现代码
2012/10/15 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
将php数组输出html表格的方法
2014/02/24 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
jquery实现控制表格行高亮实例
2013/06/05 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
django之常用命令详解
2016/06/30 Python
Python调用C++程序的方法详解
2017/01/24 Python
python监控进程脚本
2018/04/12 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
Django 拆分model和view的实现方法
2019/08/16 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
python日志模块logbook使用方法
2019/09/19 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
初中作文评语大全
2014/04/23 职场文书
假面舞会策划方案
2014/05/29 职场文书
理财学专业自荐书
2014/06/28 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
高一数学教学反思
2016/02/18 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书