因此,我在文本框中输入内容,然后决定运行脚本。
我希望该脚本引用光标所在的文本框。
在Javascript中,如何引用特定的textFrame?
答案 0 :(得分:0)
请考虑以下要点:
var selectedItem = app.activeDocument.selection[0];
if (selectedItem instanceof InsertionPoint &&
selectedItem.parentTextFrames[0] instanceof TextFrame) {
var textFrame = selectedItem.parentTextFrames[0];
// This just demonstrates that the variable `textFrame` does
// hold a reference to the actual text frame - let's delete it !
textFrame.remove();
} else {
alert("The cursor has not been placed in a text frame");
}
说明:
首先,我们通过以下代码获得对文档中所选内容的引用:
var selectedItem = app.activeDocument.selection[0];
然后我们通过以下方式推断选择类型是否等于“文本框中的光标” :
instanceof InsertionPoint
。parentTextFrames
是否为TextFrame
。
if (selectedItem instanceof InsertionPoint &&
selectedItem.parentTextFrames[0] instanceof TextFrame) {
// ... If we get here, then the "cursor is in a Text Frame".
}
如果条件检查推断出“光标位于文本框架中” 为true
,则我们继续分配文本框架的引用名为textFrame
的变量。即
var textFrame = selectedItem.parentTextFrames[0];
只是为了证明变量textFrame
确实拥有对实际文本框架的引用,我们将其删除了!
textFrame.remove(); // Do stuff with the text frame !
如果条件检查推断出“光标位于文本框架中” 为false
,则我们提醒用户”光标未放在文本框中”。
文本框中的选定文本字符
也许用户已经在文本框中选择了文本字符,而不是仅仅将光标放在文本框中。如果您也想在这种情况下获取文本框架参考-则将上面要点中的条件检查更改为类似以下内容:
if ((selectedItem instanceof InsertionPoint || selectedItem instanceof Text)
&& selectedItem.parentTextFrames[0] instanceof TextFrame) {
// ...
}