Как получить textFrame, в котором находится курсор? - PullRequest
0 голосов
/ 17 марта 2019

Итак, я набираю текстовый фрейм и решаю запустить скрипт.

Я бы хотел, чтобы этот скрипт ссылался на текстовый фрейм, в котором уже находится мой курсор.

Как в Javascript ссылаться на этот конкретный текстовый фрейм?

1 Ответ

0 голосов
/ 20 марта 2019

Решение:

Рассмотрим следующую суть:

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");
}

Пояснение:

  1. Сначала мы получаем ссылку на все, что выбрано в документе, через строку:

    var selectedItem = app.activeDocument.selection[0];
    
  2. Затем мы определяем, соответствует ли тип выделения «курсору в текстовом фрейме» по:

    • Сначала проверьте, что это 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".
    
    }
    
  3. Если условные проверки, определяющие, находится ли курсор в текстовом фрейме, равны true, то мы переходим к присвоению текстовой фрейма ссылки на переменную по имени textFrame. т.е. * * 1 041

    var textFrame = selectedItem.parentTextFrames[0];
    

    Просто чтобы продемонстрировать, что переменная textFrame содержит ссылку на фактический текстовый фрейм, который мы удаляем!

    textFrame.remove(); // Do stuff with the text frame !
    
  4. Если условные проверки, определяющие, находится ли курсор в текстовом фрейме, равны false, то мы предупреждаем пользователя, что "Курсор не был помещен в текстовая рамка ".


Выбранные текстовые символы в текстовой рамке

Возможно, пользователь выбрал текстовые символы в текстовом фрейме вместо того, чтобы просто поместить курсор в текстовый фрейм. Если вы хотите получить ссылку Текстовый фрейм и в этом сценарии - измените вашу условную проверку в приведенной выше сущности на что-то вроде этого:

if ((selectedItem instanceof InsertionPoint || selectedItem instanceof Text) 
    && selectedItem.parentTextFrames[0] instanceof TextFrame) {
    // ...
}
...