Как захватить selectionStart и selectionEnd в Safari для ios? - PullRequest
0 голосов
/ 22 ноября 2018

У нас есть компонент, который позволяет пользователям сохранять основные моменты текста на нашем сайте.Он отлично работает во всех других наших браузерах, но в Safari в ios он не захватывает ни одного выделения.

Мы используем Vue, и это код для поля формы.Вы можете видеть, как мы реагируем на событие @ select.native.

<b-form-textarea
    v-show="!highlight || editing"
    v-model="highlightableText"
    @select.native="selectText"
    :readonly="true"
    :no-resize="true"
    rows="10"
    ref="highlightable_textarea"
    class="ubcgs-highlightable-text"
>
</b-form-textarea>

Метод selectText выглядит следующим образом:

selectText(e) {
    this.selecting = true;
    this.selectionStart = e.target.selectionStart;
    this.selectionEnd = e.target.selectionEnd;
},

На моем iPhone я могу выделить часть текста вобычным способом скопируйте его и вставьте в другое окно.Однако, насколько я могу судить, метод selectText никогда не вызывается.Например, this.selecting показывает отдельную текстовую область, когда true, и не отображается.

Различные ответы и блоги, которые я нашел, по-видимому, указывают на то, что этот подход должен работать, но они сделаны несколько лет назад, и Apple любит менять вещи более регулярно, чем это.Есть ли какое-то другое событие, которое я должен слушать, или какой-то другой способ получить выбор?

1 Ответ

0 голосов
/ 28 ноября 2018

Я обнаружил, что добавление события "touchend" работает.Рабочая версия:

<b-form-textarea
    v-show="!highlight || editing"
    v-model="highlightableText"
    @select.native="selectText"
    @touchend.native="selectText"
    :readonly="true"
    :no-resize="true"
    rows="10"
    ref="highlightable_textarea"
    class="ubcgs-highlightable-text"
>
</b-form-textarea>
...