Select InDesign 中线程中的所有文本?

Select all text in thread in InDesign?

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

如何使用 extendscript / javascript select InDesign 中线程的 内容

(<EM>Any_text_item</EM>).contents 是纯文本 interface ;它不直接访问 InDesign 的原生 Text object,而是将文本与常规 Javascript 字符串相互转换。因此 selecting Javascript 文本(如果可能)对 InDesign 文档本身中的文本没有任何影响。

要从任何文本框架(或其他对象)获取所有串接文本,您可以使用它的 parentStory 对象。对于 select(原生)文本,将其 texts[0] 属性 定位并在其上使用 select

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

如果您能找到 "current selection" 被选中的位置,您可以在其前面添加以下行: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();
}

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

之后
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 'unwanted' 个对象。早些时候,我使用了 parentStory,但意识到纯文本 selection 也有此 属性,因此它在常规 selection 和文本框架之间没有区别。对于 previousTextFrame,您可以确定只有文本框和文本路径才是正确的对象类型。