Note
的parent
或storyOffset
属性的类型取决于该笔记是从Text
还是Story
获得的。为什么?如何在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 :(得分: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