>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 예제 튜토리얼(19) HoTMetal 활용하기(5)_기본지식

자바스크립트 예제 튜토리얼(19) HoTMetal 활용하기(5)_기본지식

WBOY
WBOY원래의
2016-05-16 19:22:27965검색
 

HoTMetal中使用javascript

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

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

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

Application.Run("On_Document_Save");

}

]]>


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

![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);

}

]]>


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

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

HoTMetal에서 Javascript 사용하기

5. 마지막 수정 날짜를 확인하는 스크립트 작성 방법

이 On_Document_Activate 매크로는 디스크에 있는 파일이 현재 편집된 문서와 동일한지 확인합니다. HoTMetaL 사용 마지막 수정 날짜입니다. 날짜가 일치하지 않는 경우 사용자에게 어떻게 해야 하는지 묻는 메시지가 표시됩니다. 다음은 이 매크로의 특정 코드입니다.


desc="매크로 실행" : Hide_On_Document_Activate ">
// 로컬 문서에만 이 작업을 수행하세요

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

var name = ActiveDocument.LocalFullName;

if (Application.ReadableFileExists(name)) { // 문서가 저장되지 않은 경우 아무 작업도 수행하지 않음

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 예 = 6;

var No = 7;

var msg = "이 문서의 디스크 버전이 그때부터 변경되었습니다.";

msg = "버전이 메모리에 있습니다. 문서를 다시 열겠습니까?";

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

if (ret = = Yes ) {

ActiveDocument.Reload();

}

// 사용자의 응답에 관계없이 타임스탬프를 재설정

// 이렇게 하면 항상 표시되는 대화상자

Application.Run("On_Document_Open_Complete");

}

}

}

}

]]>


파일이 로드되었는지 확인해 보겠습니다. 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. 마지막 수정 날짜를 확인하는 스크립트 작성 방법

다음으로 현재 문서의 사용자 정의 속성 집합을 호출합니다. props = ActiveDocument.CustomDocumentProperties 및 이 속성을 확인하세요. 숫자가 0이 아닌지 여부입니다. 이를 이전 On_Document_Open_Complete 매크로에 저장하고 oldMod에 할당했습니다:

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

oldMod(공개 문서에서) 및 newMod를 찾을 때 (디스크에서) 파일이 디스크에서 복사되었는지 여부를 사용자에게 알려야 합니다.

var Yes = 6;

var No = 7 ;

var msg = " 이 문서의 디스크 버전이 그때부터 변경되었습니다.";

msg = "메모리에 있는 버전입니다. 문서를 다시 열시겠습니까?";

var ret = Application.MessageBox( msg, 36, "문서가 변경됨");

if (ret == Yes) {

ActiveDocument.Reload();

}

마침내 , 열린 작업을 모방하여 현재 문서의 날짜를 재설정합니다.

Application.Run("On_Document_Open_Complete");

확장하고 싶습니다. 이 업데이트 기능은 시기에 관계없이 확인되고 실행됩니다. 문서가 최신이거나 응용 프로그램이 최신일 때. 이제 위의 매크로를 호출하는 On_Application_Activate 매크로를 정의할 수 있습니다:


응용 프로그램 .Run("On_Document_Activate");

]]>


이제 On_Document_Save 함수를 On_Document_SaveAs 매크로에 복사해야 합니다.

< ;MACRO 이름= "On_Document_SaveAs" lang="JScript"<>![CDATA[

Application.Run("On_Document_Save");

]]>

마지막으로 테스트해보겠습니다. 먼저 HotMetaL PRO 6.0에서 문서를 엽니다. 즐겨 사용하는 편집기에서 동일한 문서를 엽니다. 디스크에 저장하기 전에 아무 곳에나 공백 문자를 삽입하세요. HoTMetaL 애플리케이션으로 전환하면 그림 1과 같은 정보를 얻게 됩니다.

자바스크립트 예제 튜토리얼(19) HoTMetal 활용하기(5)_기본지식

(사진 1)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.