Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Запретить выделение. (https://javascript.ru/forum/events/84566-zapretit-vydelenie.html)

ureech 15.10.2022 11:49

Запретить выделение.
 
Привет.
Какой то текст <span class="test">фффф</span> какой то текст.


Если так
var test = document.querySelectorAll('.test');
$(test).on('mousedown selectstart', function () {
    return false;
});


то выделение не работает, если начинаешь выделять со span. Но если начать выделять с другого места справа или слево, то выделение происходит. Написал так.

let txt = window.getSelection().toString();
    var a = [];
    for(var i=0;i<test.length; i++){
         a = $(test)[i].innerText; 
         if(txt.includes(a))return false;       
    }

Вроде теперь работает. Не выделяет. Но при условии, что в выделение попадает весь текст в span. Но если вместе с новым словом захватывается только часть текста в span, то выделение срабатывает. И это логично. Как можно это решить?

ureech 15.10.2022 12:00

Вроде решил.
При выделении, выделенная строка оборачивается в span и прописывается класс. Поэтому сделал так

const child = $(span.childNodes);
    for (key in child) {
        var sub = child[key];
        var cls = sub.className;
         if(cls === undefined)continue;
        if (cls == 'no-moder') { return false; }
    }


Но как то это не по феншую,имхо)

Alexandroppolus 15.10.2022 13:15

https://webref.ru/css/user-select

ureech 15.10.2022 20:39

Alexandroppolus, спасибо. Это может сработать).


Часовой пояс GMT +3, время: 03:13.