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 相关文章推荐
alixixi runcode.asp的代码不错的应用
Aug 08 Javascript
JavaScript国旗变换效果代码
Aug 13 Javascript
JavaScript 常见对象类创建代码与优缺点分析
Dec 07 Javascript
js图片实时加载提供网页打开速度
Sep 11 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
Jun 13 Javascript
很酷的星级评分系统原生JS实现
Aug 25 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
从setTimeout看js函数执行过程
Dec 19 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
Jan 06 Javascript
js 执行上下文和作用域的相关总结
Feb 08 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 芝麻信用接入的注意事项
2016/12/01 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
jQuery动态添加
2016/04/07 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
Node.js中的child_process模块详解
2018/06/08 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
有机童装:Toby Tiger
2018/05/23 全球购物
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
大学生工作推荐信范文
2013/12/02 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
新年晚会主持词
2014/03/24 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
水利水电专业自荐信
2014/07/08 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书