Решение:
Рассмотрим следующую суть:
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
. т.е. * * 1 041
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) {
// ...
}