Напротив функции disableSelection для включения выделения текста для определенных элементов HTML - PullRequest
2 голосов
/ 28 января 2012

Я использую функцию JavaScript, называемую disableSelection, для предотвращения выделения текста на определенных элементах.Объявление этой функции здесь:

function disableSelection(target)
{
    if (typeof target.onselectstart!="undefined") //IE route
        target.onselectstart=function(){return false}
    else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
        target.style.MozUserSelect="none"
    else //All other route (ie: Opera)
        target.onmousedown=function(){return false}
    target.style.cursor = "default"
}

Я хочу отключить выделение текста на всей странице, кроме элементов формы.Если я вызову disableSelection (document.body), он выполнит свою работу, но также отключит выделение текста в элементах формы (но это происходит только в Firefox).

Мой вопрос заключается в том, как я могу предотвратить формуполя, на которые влияет этот текстовый сценарий блокировки?Я могу пометить все содержимое, кроме полей формы, но это требует очень больших усилий.

Буду признателен за любую помощь по этому вопросу.

Примечание: я нашел скрипт disableSelection из здесь .

Ответы [ 3 ]

0 голосов
/ 05 июля 2013
Скрипт

должен находиться под тегом <body>.если вы хотите отключить только div: disableSelection(document.getElementById('divName'))

0 голосов
/ 02 мая 2014

Это работает для меня, только проверено в хром:

function enableSelection(target) {
    //For IE This code will work
    if(typeof target.onselectstart != "undefined") {
        target.onselectstart = function() {
            return true;
        }
    }

    //For Firefox This code will work
    else if(typeof target.style.MozUserSelect != "undefined") {
        target.style.MozUserSelect = "all";
    }

    //All other  (ie: Opera) This code will work
    else {
        target.onmousedown = function() {
            return true;
        }
        target.style.cursor = "default";
    }
}
0 голосов
/ 30 января 2012

, возвращая false из события, вы отключите поведение браузера по умолчанию (выделение текста).Для этого я бы изменил функцию следующим образом:

function disableSelection(target, enable)
{
    if (typeof target.onselectstart!="undefined") //IE route
        target.onselectstart=function(){return enable}
    else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
        target.style.MozUserSelect=enable?"all":"none";
    else //All other route (ie: Opera)
        target.onmousedown=function(){return enable}
    target.style.cursor = "default"
}

и затем вызвал бы это для ваших вещей;

disableSelection(document.body, false);
disableSelection(document.forms[0], true);

должно работать (не проверялось)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...