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 相关文章推荐
ExtJS TabPanel beforeremove beforeclose使用说明
Mar 31 Javascript
深入理解JavaScript定时机制
Oct 29 Javascript
jquery 跨域访问问题解决方法(笔记)
Jun 08 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
js获取select标签选中值的两种方式
Jan 09 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
Mar 13 Javascript
JS实现动态给图片添加边框的方法
Apr 01 Javascript
初步认识JavaScript函数库jQuery
Jun 18 Javascript
AnjularJS中$scope和$rootScope的区别小结
Sep 18 Javascript
Vue.js第四天学习笔记(组件)
Dec 02 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
JavaScript实现短暂提示框功能
Apr 04 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实现删除非站内外部链接实例代码
2014/06/17 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
python实现汉诺塔递归算法经典案例
2021/03/01 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python3.6编写的单元测试示例
2019/08/17 Python
关于Python-faker的函数效果一览
2019/11/28 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
党员学习十八大感想
2014/01/17 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
公司营业员的自我评价
2014/03/04 职场文书
五四青年节的活动方案
2014/08/20 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技