我试图选择InDesign CS4中线程中的所有文本,这样我就可以使用doScript
在所选文本上调用另一个脚本(不是由我制作)。 This question让我觉得有可能。我尝试了frame.contents.select();
,但是这给出了错误" frame.contents.select不是函数。"
如何使用extendscript / javascript在InDesign中选择线程的内容?
答案 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
,您可以确定只有文本框架和文本路径才是正确的对象。