在InDesign中选择线程中的所有文本?

时间:2015-06-11 20:21:19

标签: javascript adobe-indesign extendscript

我试图选择InDesign CS4中线程中的所有文本,这样我就可以使用doScript在所选文本上调用另一个脚本(不是由我制作)。 This question让我觉得有可能。我尝试了frame.contents.select();,但是这给出了错误" frame.contents.select不是函数。"

如何使用extendscript / javascript在InDesign中选择线程的内容

1 个答案:

答案 0 :(得分:2)

(Any_text_item).contents仅为纯文本界面;它不直接访问InDesign的本机Text object,而是将文本转换为常规Javascript字符串。因此,选择Javascript文本(如果可能)将对InDesign文档本身的文本无效。

要从任何文本框架(或其他对象)获取所有线程文本,您可以使用其parentStory对象。要选择(本机)文本,请定位其texts[0]属性并使用select

frame.parentStory.texts[0].select();

如果您可以找到检查“当前选择”的位置,您可以在它之前添加以下行: 1

if (app.selection.length == 1 && app.selection[0].hasOwnProperty("previousTextFrame"))
{
    // alert ('we must be a text frame!');
    app.selection[0].parentStory.texts[0].select();
}

例如,在第29行附近的脚本markdownId.jsx中,就在

之后
tagset = findTagSet();
if (app.selection.length > 0)
{ // <- add the new lines immediately below this one, above the next
     if (app.selection.length == 1 && app.selection[0].hasOwnProperty('baseline') && app.selection[0].length > 1)

¹最好是测试你确定 none '不想要的'对象所具有的属性。之前,我使用parentStory但是意识到纯文本选择也具有此属性,因此它在常规选择和文本框架之间无法区分。对于previousTextFrame,您可以确定只有文本框架和文本路径才是正确的对象。