javascript实例教程(19) 使用HoTMetal(5)

Caicos_奶爸

Caicos_奶爸

2016-01-29 11:33

javascript实例教程(19) 使用HoTMetal(5),&#106avascript实例教程(19) 使用HoTMetal(5)
 

HoTMetal中使用Javascript

5.怎样编写脚本来检查上次修改的日期

在本节教程中你将可以学到怎样编写一个宏来检查是否有任何的程序已经利用HoTMetaL中修改过一个文件。这个宏包括了以下几个检查的更新特性:On_Document_Open_Complete、On_Document_Activate和 On_Application_Activate。在前面的教程中,这些宏的名字已经被预定义了,所以这里不能对它们进行修改。这些名字指定了事件来触发宏。这个event-macro关联是隐含的,所以不能通过任何手段来对它进行改写。当我们打开一个文档的时候,比如On_Document_Open_Complete,它总是在完成文件打开的时候被调用的。以下是具体的定义: <MACRO name="On_Document_Open_Complete" lang="JScript"<![CDATA[

var name = ActiveDocument.LocalFullName;

if (Application.ReadableFileExists(name)) { // if document has never been saved, do nothing

Application.Run("On_Document_Save");

}

]]</MACRO

我们首先提取当前文件夹的文件名:name = ActiveDocument.LocalFullName,然后检查可读的文件是否存在;接着我们运行宏On_Document_Save,这个宏On_Document_Save示范了微软的FileSystemObject作为ActiveX控件的使用方法,这是一个在JavaScript中。这个宏的主要思想是更新文档的LastMod属性以反应磁盘上文档的当前事件:

<MACRO name="On_Document_Save" lang="JScript"<![CDATA[

var fso = new ActiveXObject("Scripting.FileSystemObject");

var f = fso.GetFile(ActiveDocument.LocalFullName);

var mod = Date.parse(f.DateLastModified);

var props = ActiveDocument.CustomDocumentProperties;

if (props.count != 0) {

props.Add("LastMod", mod);

}

]]</MACRO

这个宏从FileSystemObject创建了一个ActiveX控件,它包括了微软的脚本库: var fso = new ActiveXObject("Scripting.FileSystemObject");

我们可以通过以下的语句来从磁盘得到文件的属性:f = fso.GetFile(name),然后提取出文件最后一次修改的事件:mod = Date.parse(f.DateLastModified)。我们通过调用ActiveDocument的CustomDocumentProperties 属性来创建了一个用户定义的属性集:props。然后我们利用mod属性来对这个集进行初始化,这时它的数值为"LastMode"。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com)

HoTMetal中使用Javascript

5.怎样编写脚本来检查上次修改的日期

这个On_Document_Activate宏是检查磁盘上的文件是否有与利用HoTMetaL编辑的当前文档相同的上次修改的日期。它提示用户该做什么以防日期不匹配。以下是这个宏的具体代码:

<MACRO name="On_Document_Activate" lang="JScript" id="44" tooltip="Hide_On_Document_Activate"

desc="Runs Macro: Hide_On_Document_Activate"<![CDATA[

// Do this for local documents only

if (ActiveDocument.FullName == ActiveDocument.LocalFullName) {

var name = ActiveDocument.LocalFullName;

if (Application.ReadableFileExists(name)) { // if document has never been saved, do nothing

var fso = new ActiveXObject("Scripting.FileSystemObject");

var f = fso.GetFile(name);

var newMod = Date.parse(f.DateLastModified);

var props = ActiveDocument.CustomDocumentProperties;

if (props.count != 0) {

oldMod = props.Item("LastMod").value;

if (oldMod != newMod) {

var Yes = 6;

var No = 7;

var msg = "The disk version of this document has changed from then";

msg += "version in memory. Do you want to re-open the document?";

var ret = Application.MessageBox(msg, 36, "Document Changed");

if (ret == Yes) {

ActiveDocument.Reload();

}

// Reset the timestamp regardless of the user's response

// This will prevent the dialog from always showing

Application.Run("On_Document_Open_Complete");

}

}

}

}

]]</MACRO

我们再检查文件是否装载了: ActiveDocument.FullName == ActiveDocument.LocalFullName。然后我们验证一下文件是否被保存到磁盘中: Application.ReadableFileExists(name). 类似于前面的On_Document_Open_Complete 宏,我们创建一个ActiveX控件并且提取出文件的上次修改的日期,代码如下:

var fso = new ActiveXObject("Scripting.FileSystemObject");

var f = fso.GetFile(name);

var newMod = Date.parse(f.DateLastModified);
HoTMetal中使用Javascript

5.怎样编写脚本来检查上次修改的日期

展开更多 50%)
分享

猜你喜欢

javascript实例教程(19) 使用HoTMetal(5)

电脑网络
javascript实例教程(19) 使用HoTMetal(5)

javascript实例教程(19) 使用HoTMetal(1)

电脑网络
javascript实例教程(19) 使用HoTMetal(1)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

javascript实例教程(19) 使用HoTMetal(2)

电脑网络
javascript实例教程(19) 使用HoTMetal(2)

javascript实例教程(19) 使用HoTMetal(6)

电脑网络
javascript实例教程(19) 使用HoTMetal(6)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

javascript实例教程(19) 使用HoTMetal(4)

电脑网络
javascript实例教程(19) 使用HoTMetal(4)

javascript实例教程(19) 使用HoTMetal(7)

电脑网络
javascript实例教程(19) 使用HoTMetal(7)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

完美解决一个事件激活多个函数(2)

完美解决一个事件激活多个函数(2)

《迷你西游》原形解读及护法解析

《迷你西游》原形解读及护法解析
下拉加载更多内容 ↓