2016-04-12 17 views
0

NoteのタイプparentまたはstoryOffsetのタイプは、ノートがTextまたはStoryから得られたかどうかによって異なります。どうして? Noteで作業しているコードでこれをきれいに扱うにはどうすればいいのでしょうか?Noteの同じプロパティは、あるオブジェクトの配列であり、時にはオブジェクト自体の配列であることもあります。どうして?

次のスクリプトは状況を公開しています。あなたが処理したいすべての親のコンストラクタをテストする必要が

// INDESIGN CS6 8.1 VERSION 

var doc = app.documents.add(); 
doc.pages.item(0).textFrames.add(); 
var story = doc.stories[0]; 
story.insertionPoints[0].contents = "x"; 
story.insertionPoints[0].notes.add(); 
var range = story.texts.itemByRange(story.characters.item(0), 
            story.characters.item(1)); 

alert( story .notes[0].parent.constructor.name);  // "InsertionPoint" 
alert( range .notes[0].parent.constructor.name);  // "Array" 

alert( story .notes[0].storyOffset.constructor.name); // "InsertionPoint" 
alert( range .notes[0].storyOffset.constructor.name); // "Array" 

// INCOPY CS6 8.1 VERSION 

app.documents.add(); 
var story = app.selection[0].parentStory; 
story.insertionPoints[0].contents = "x"; 
story.insertionPoints[0].notes.add(); 
var range = story.texts.itemByRange(story.characters.item(0), 
            story.characters.item(1)); 

alert( story .notes[0].parent.constructor.name);  // "InsertionPoint" 
alert( range .notes[0].parent.constructor.name);  // "Array" 

alert( story .notes[0].storyOffset.constructor.name); // "InsertionPoint" 
alert( range .notes[0].storyOffset.constructor.name); // "Array" 

答えて

0

Textオブジェクトのクラス階層については、documentationを参照してください。たとえば、次のような関数を使用します。

var isText = function(text) { 
    var c = text.constructor; 
    return c === Paragraph || c === Line || c === Word 
     || c === Text || c === TextStyleRange || c === Story 
     || c === InsertionPoint || c === TextColumn; 
} 

isText(story.notes[0].parent) // => true 
関連する問題