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 表单取值常用代码
Dec 22 Javascript
Extjs学习笔记之三 extjs form更多的表单项
Jan 07 Javascript
js几个验证函数代码
Mar 25 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
May 03 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
javascript实现简单的Map示例介绍
Dec 23 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
Feb 28 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
Sep 05 Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
Nov 04 Javascript
Vue实现图书管理小案例
Dec 03 Vue.js
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
Dec 19 Vue.js
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+MySQL 制作简单的留言本
2009/11/02 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
使用graphics.py实现2048小游戏
2015/03/10 Python
使用python实现BLAST
2018/02/12 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python requests指定出口ip的例子
2019/07/25 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
海飞丝的广告词
2014/03/20 职场文书
实习协议书
2015/01/27 职场文书
明确岗位职责
2015/02/14 职场文书
运动会主持词大全
2015/07/02 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
浅谈Python协程asyncio
2021/06/20 Python
Python中tqdm的使用和例子
2022/09/23 Python