0

a或属性Note的类型取决于注释是从 a还是 a获得的。为什么?如何在不知道它来自哪里的代码中干净地处理这个问题?parentstoryOffsetTextStoryNote

以下脚本揭示了这种情况。

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

1 回答 1

0

您必须测试要处理的每个父构造函数。有关对象的类层次结构,请参阅文档Text。例如,使用这样的函数:

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
于 2016-04-29T13:26:39.920 回答