How to capture selectionStart and selectionEnd in Safari for ios?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















We have a component that allows users to save highlights of some of the text on our site. It works fine in all our other browsers, but in Safari in ios, it does not capture any of the selection.



We are using Vue, and this is the code for the form field. You can see we react to the @select.native event.



<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>


The selectText method is like so:



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


On my iPhone, I can select some of the text in the usual way, copy it, and paste it in another window. However, so far as I can tell, the selectText method is never called. For example, this.selecting shows a separate text area when true, and it does not show.



Various answers and blogs that I've found seem to indicate that this approach should work, but they are from several years ago, and Apple likes to change things up more regularly than that. Is there some other event I should be listening for, or some other way to get the selection?










share|improve this question





























    0















    We have a component that allows users to save highlights of some of the text on our site. It works fine in all our other browsers, but in Safari in ios, it does not capture any of the selection.



    We are using Vue, and this is the code for the form field. You can see we react to the @select.native event.



    <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>


    The selectText method is like so:



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


    On my iPhone, I can select some of the text in the usual way, copy it, and paste it in another window. However, so far as I can tell, the selectText method is never called. For example, this.selecting shows a separate text area when true, and it does not show.



    Various answers and blogs that I've found seem to indicate that this approach should work, but they are from several years ago, and Apple likes to change things up more regularly than that. Is there some other event I should be listening for, or some other way to get the selection?










    share|improve this question

























      0












      0








      0








      We have a component that allows users to save highlights of some of the text on our site. It works fine in all our other browsers, but in Safari in ios, it does not capture any of the selection.



      We are using Vue, and this is the code for the form field. You can see we react to the @select.native event.



      <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>


      The selectText method is like so:



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


      On my iPhone, I can select some of the text in the usual way, copy it, and paste it in another window. However, so far as I can tell, the selectText method is never called. For example, this.selecting shows a separate text area when true, and it does not show.



      Various answers and blogs that I've found seem to indicate that this approach should work, but they are from several years ago, and Apple likes to change things up more regularly than that. Is there some other event I should be listening for, or some other way to get the selection?










      share|improve this question














      We have a component that allows users to save highlights of some of the text on our site. It works fine in all our other browsers, but in Safari in ios, it does not capture any of the selection.



      We are using Vue, and this is the code for the form field. You can see we react to the @select.native event.



      <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>


      The selectText method is like so:



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


      On my iPhone, I can select some of the text in the usual way, copy it, and paste it in another window. However, so far as I can tell, the selectText method is never called. For example, this.selecting shows a separate text area when true, and it does not show.



      Various answers and blogs that I've found seem to indicate that this approach should work, but they are from several years ago, and Apple likes to change things up more regularly than that. Is there some other event I should be listening for, or some other way to get the selection?







      ios vue.js textarea mobile-safari






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 21 '18 at 23:18









      llhiltonllhilton

      73111




      73111
























          1 Answer
          1






          active

          oldest

          votes


















          0














          I found that adding the event "touchend" worked. The working version:



          <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>





          share|improve this answer
























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53421798%2fhow-to-capture-selectionstart-and-selectionend-in-safari-for-ios%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            I found that adding the event "touchend" worked. The working version:



            <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>





            share|improve this answer




























              0














              I found that adding the event "touchend" worked. The working version:



              <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>





              share|improve this answer


























                0












                0








                0







                I found that adding the event "touchend" worked. The working version:



                <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>





                share|improve this answer













                I found that adding the event "touchend" worked. The working version:



                <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>






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 27 '18 at 21:03









                llhiltonllhilton

                73111




                73111
































                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53421798%2fhow-to-capture-selectionstart-and-selectionend-in-safari-for-ios%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Guess what letter conforming each word

                    Port of Spain

                    Run scheduled task as local user group (not BUILTIN)