2016-04-12 15 views
0

Note'un parent veya storyOffset özelliğinin türü, notun Text veya Story'dan alınmasına bağlıdır. Niye ya? Bir kodun, nereden geldiğini bilmeden bir Note üzerinde çalışan kodla nasıl başa çıkılır?Not'un aynı özelliği bazen bir nesnenin dizisidir, bazen nesnenin kendisidir. Niye ya?

Aşağıdaki komut dosyaları durumu gösterir.

// 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" 

cevap

0

Sen işlemek istediğiniz her ebeveyn yapıcı test etmek gerekir. Text nesnesinin sınıf hiyerarşisi için documentation'a bakın. Örneğin, aşağıdaki gibi bir işlev kullanın:

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