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 应用代码 方便的排序功能
Feb 06 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
超精准的javascript验证身份证号的具体实现方法
Nov 18 Javascript
JavaScript统计网站访问次数的实现代码
Nov 18 Javascript
sencha ext js 6 快速入门(必看)
Jun 01 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
JS中的JSON对象的定义和取值实现代码
May 09 Javascript
使用js实现一个简单的滚动条过程解析
Sep 10 Javascript
layui 阻止图片上传的实例(before方法)
Sep 26 Javascript
vue使用video插件vue-video-player详解
Oct 23 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中http_build_query 的一个问题
2012/03/25 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php实现Mysql简易操作类
2015/10/11 PHP
双冒号 ::在PHP中的使用情况
2015/11/05 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
js的event详解。
2006/09/06 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
python控制台显示时钟的示例
2014/02/24 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
物流专业大学生求职信范文
2013/10/28 职场文书
高中学校对照检查材料
2014/08/31 职场文书
签字仪式主持词
2015/07/03 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
Java基础之this关键字的使用
2021/06/30 Java/Android
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏