2016-08-12 4 views
1

문서 (또는 레이어)가 문서에 존재하는지 확인하려고했습니다. 이 스크립트는 이름이 x 인 pageItem이있는 경우 작동합니다. 그러나 그렇지 않은 경우 실패합니다. (지금까지는 그렇게 좋았습니다)슈뢰딩거의 물건?

이상한 부분은 "x"라는 이름의이 객체가 없더라도 A가 객체를 반환한다는 것입니다. 이름, ID, 색인 또는 무엇이든 묻는다면 오류 때문에 스크립트가 중지됩니다.

//Schroedinger's object 
A=app.activeDocument.pageItems.itemByName("x") 
$.writeln(A) //returns: [object PageItem] 
$.writeln(A.id) //Error. doesn't exist 

그래서 InDesign의 빈 새 문서로 그것을 밖으로 시도하고 스크립트를 실행하십시오. 나는이 현상을 이해하지 못한다.

은 적어도 당신은

+1

[이 블로그 게시물] (http://www.indiscripts.com/post/2010/06/on-everyitem-part-1)은 유용하게 설명합니다. –

답변

3

접근 방식이 올바른지 (즉, 내가 최선을 기대, 지금 사용하고 무엇을)이 A.isValid과 실존이다 확인할 수 있습니다.

.itemByName()은 항상 PageItem 개체를 반환합니다 (일부 문자열을 인수로 전달한 경우). 그러나 반환 된 객체는 해당 항목이 문서에있는 경우에만 유효합니다. 반환 된 개체가 유효한지 확인하려면 .isValid 속성을 사용해야합니다.