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 DOM编程实例(智播客学习)
Nov 23 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
javascript快速排序算法详解
Sep 17 Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 Javascript
浅谈String.valueOf()方法的使用
Jun 06 Javascript
Node.js Streams文件读写操作详解
Jul 04 Javascript
JS基础随笔(菜鸟必看篇)
Jul 13 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
JavaScript变量类型以及变量作用域详解
Aug 14 Javascript
Javascript获取某个月的天数
May 30 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
Nov 08 Javascript
vue组件库的在线主题编辑器的实现思路
Apr 03 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
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
js中开关变量使用实例
2017/02/24 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python实现LRU热点缓存及原理
2019/10/29 Python
python requests.get带header
2020/05/05 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
《纸船和风筝》教学反思
2014/02/15 职场文书
委托书模板
2014/04/04 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
文员岗位职责
2015/02/04 职场文书
天下第一关导游词
2015/02/06 职场文书
个性与发展自我评价
2015/03/06 职场文书
升学宴学生致辞
2015/09/29 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
如何用Python搭建gRPC服务
2021/06/30 Python