2016-08-12 40 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中的空白新文檔進行試用並運行腳本。我不明白這個現象。

至少你可以驗證它的所有腦幹與A.isValid(這是我在用,現在,希望能爲最佳)

+1

[此博客文章](http://www.indiscripts.com/post/2010/06/on-everyitem-part-1)有助於解釋事情。 –

回答

3

你的做法是正確的。

.itemByName()總是返回一個PageItem對象(假設您傳遞了一些字符串作爲參數)。但是,如果文檔中存在相應的項目,則返回的對象纔有效。您應該使用.isValid屬性來驗證返回的對象是否有效。