За последние 24 часа нас посетили 22972 программиста и 1236 роботов. Сейчас ищет 781 программист ...

Как убрать постоянную работу функции

Тема в разделе "JavaScript и AJAX", создана пользователем Атм_Евгений, 11 окт 2021.

  1. Атм_Евгений

    Атм_Евгений Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    206
    Симпатии:
    5
    Всем привет!

    Ребята, дело такое, насобирал код:
    Код (Text):
    1.  
    2. <div class="div_insert" onclick="insertTag('<span>', '</span>');">
    3. <script>
    4.   document.onselectionchange = function() {
    5.     let {anchorNode, anchorOffset, focusNode, focusOffset} = document.getSelection();
    6.     let from = `${anchorNode && anchorNode.data}:${anchorOffset}`;
    7.     let to = `${focusNode && focusNode.data}:${focusOffset}`;
    8.     console.log(from);
    9.     console.log(to);
    10.   };
    11. </script>
    Этот скрипт обрабатывает выделение текста на странице и в консоль выдает позицию начала и конца текстового курсора. Скрипт работает постоянно. Как сделать, чтобы скрипт запускался при нажатии на div (указан над скриптом) и выполнялся один раз. Для div прописал onclick="insertTag..., но не могу обернуть сам скрипт в эту функцию. Подскажите как это сделать.

    За ранее благодарю за ответ!
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Много интересного и полезного можно сделать, если будет возможность ознакомиться: Браузер: документ, события, интерфейсы (javascript.ru)
    Так-то событие selectionchange.
    Привязали его к элементу document. Надо привязать к элементу с классом "div_insert" (querySelector(), или одному из getElementsByClassName()).
    Привязывать опят-таки можно по-разному. Или через свойство on<event>, или посредством addEventListener().
    Подробности - в учебнике по ссылке выше.
     
  3. Атм_Евгений

    Атм_Евгений Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    206
    Симпатии:
    5
    Подскажите, как из данного кода из функции вернуть переменные, через return не получается:
    Код (Text):
    1. document.onselectionchange = function() {
    2.     let {anchorNode, anchorOffset, focusNode, focusOffset} = document.getSelection();
    3.     let from = `${anchorNode && anchorNode.data}:${anchorOffset}`;
    4.     let to = `${focusNode && focusNode.data}:${focusOffset}`;
    5.     console.log(from);
    6.     console.log(to);
    7.   };
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    862
    Симпатии:
    132
    Вызывайте другую ф-цию с параметрами from, to, из этой возвращать некуда, она отрабатывает по изменению выбранного текста.