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 相关文章推荐
JavaScript 解析读取XML文档 实例代码
Jul 07 Javascript
javascript 事件绑定问题
Jan 01 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
Jan 16 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
Apr 08 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
JS去除iframe滚动条的方法
Apr 01 Javascript
浅谈jquery点击label触发2次的问题
Jun 12 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
写gulp遇到的ES6问题详解
Dec 03 Javascript
JavaScript页面加载事件实例讲解
Sep 01 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
php 正则表达式小结
2009/08/31 PHP
关于页面优化和伪静态
2009/10/11 PHP
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
在Django的模型中添加自定义方法的示例
2015/07/21 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
旅游管理专业学生求职信
2013/09/28 职场文书
实习鉴定范文
2013/12/19 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
主要负责人任命书
2014/06/06 职场文书
个人学习总结范文
2015/02/15 职场文书
推销搭讪开场白
2015/05/28 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
2022漫威和DC电影上映作品
2022/04/05 欧美动漫