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 相关文章推荐
js里的prototype使用示例
Nov 19 Javascript
可选择和输入的下拉列表框示例
Nov 05 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
用js闭包的方法实现多点标注冒泡示例
May 29 Javascript
Javascript核心读书有感之表达式和运算符
Feb 11 Javascript
深入分析JSON编码格式提交表单数据
Jun 25 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
axios向后台传递数组作为参数的方法
Aug 11 Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 Javascript
通过js随机函数Math.random实现乱序
May 19 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
用cookies来跟踪识别用户
2006/10/09 PHP
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
php桥接模式应用案例分析
2019/10/23 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
python对excel文档去重及求和的实例
2018/04/18 Python
Python中return self的用法详解
2018/07/27 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
python 如何在测试中使用 Mock
2021/03/01 Python
医学生求职自荐信
2013/10/25 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书