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学习笔记之Helloworld
Dec 22 Javascript
JavaScript获取元素尺寸和大小操作总结
Feb 27 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
js实现Form栏显示全格式时间时钟效果代码
Aug 19 Javascript
JavaScript正则替换HTML标签功能示例
Mar 02 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
Jun 30 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
JS设计模式之策略模式概念与用法分析
Feb 05 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
Mar 09 Javascript
微信小程序实现弹出菜单动画
Jun 21 Javascript
vue全屏事件开发详解
Jun 17 Javascript
如何基于viewport vm适配移动端页面
Nov 13 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_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
js null undefined 空区别说明
2010/06/13 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
Vue实现购物车功能
2017/04/27 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
百联网上商城:i百联
2017/01/28 全球购物
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
餐厅考勤管理制度
2014/01/28 职场文书
五四青年节演讲稿
2014/05/26 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
2015年人事科工作总结
2015/04/28 职场文书
投标单位介绍信
2015/05/05 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS