如何在iOS的Safari中捕获selectionStart和selectionEnd?

时间:2018-11-21 23:18:10

标签: ios vue.js textarea mobile-safari

我们有一个组件,允许用户在我们的网站上保存某些文本的突出显示。它可以在我们所有其他浏览器上正常工作,但是在ios的Safari中,它无法捕获任何选择。

我们正在使用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方法。例如,当true时,this.selecting将显示一个单独的文本区域,但不会显示。

我发现的各种答案和博客似乎都表明这种方法应该行得通,但这是几年前的事了,苹果公司更喜欢定期进行更改。还有其他我应该听的事件,或者其他选择方法吗?

1 个答案:

答案 0 :(得分:0)

我发现添加事件“ 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>