Подтвердить что ты не робот

Включение блокировки выбора текста с помощью JavaScript

Недавно я наткнулся на сайт, который отключил выбор текста, не позволяя любому легко копировать и вставлять текст. У меня есть букмарклет, который отключает подобные попытки блокировки контекстных меню с помощью JavaScript, и мне интересно, можно ли сделать что-то подобное для выбора текста.

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

В другом месте функция вызывается с помощью disableSelection(document.body).

Возможно также решение из моего букмарклета контекстного меню:

javascript:void(document.onmousedown=null);
void(document.onclick=null);
void(document.oncontextmenu=null)

Наконец, я видел qaru.site/info/100/..., что CSS также можно использовать:

-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;

Есть ли способ сражаться с ними сразу и прекратить эту тиранию над моим браузером? Как бы я включил MozUserSelect/SelectStart для всех элементов и задал свойства CSS?

4b9b3361

Ответ 1

Подходите к той же проблеме в неприятном веб-приложении, которое я должен использовать ежедневно на работе.

Пробовал писать собственный букмарклет, который заменил бы обработчик событий onselectstart, но он не работал, по-видимому, из-за дополнительных правил CSS, которые нужно было изменить.

Затем я нашел Включить Allmark Selection буклет Alan Hogan, который решил проблему для меня. Единственная проблема с букмарклетом заключается в том, что он не обрабатывает фреймы/фреймы.

В качестве дополнительного бонуса он также дает возможность щелчка мыши правой кнопкой мыши на страницах, которые его блокируют.

Создайте закладку (например, перетащив значок слева от URL-адреса любой страницы на панель закладок), щелкните правой кнопкой мыши и выберите "Правка", переименуйте что-нибудь значимое и вставьте в поле URL следующий код:

javascript:(function(){function ats(){var styles='*,p,div{user-select:text !important;-moz-user-select:text !important;-webkit-user-select:text !important;}';jQuery('head').append(jQuery('<style />').html(styles));var allowNormal=function(){return true;};jQuery('*[onselectstart], *[ondragstart], *[oncontextmenu], #songLyricsDiv').unbind('contextmenu').unbind('selectstart').unbind('dragstart').unbind('mousedown').unbind('mouseup').unbind('click').attr('onselectstart',allowNormal).attr('oncontextmenu',allowNormal).attr('ondragstart',allowNormal);}function atswp(){if(window.jQuery){ats();}else{window.setTimeout(atswp,100);}}if(window.jQuery){ats();}else{var s=document.createElement('script');s.setAttribute('src','http://code.jquery.com/jquery-1.9.1.min.js');document.getElementsByTagName('body')[0].appendChild(s);atswp();}})();

Он имеет ограничения, хотя в том, что он не будет работать внутри вложенных фреймов.


.. btw, чтобы сделать код букмарклета доступным для чтения, я использовал конструктор Bookmarkelt в http://subsimple.com/bookmarklets/jsbuilder.htm - просто вставьте уменьшенный текст букмарклета и нажмите кнопку "Формат"; этот инструмент сэкономил мне много времени.

Ответ 2

Согласитесь с jfriend00. Хорошо, чтобы избежать проблемного веб-сайта. Если это действительно не обязательно для размещения на сайте... Тогда вы можете попробовать попробовать следующее:

Отключить браузер Java Script для проблемного веб-сайта тоже может работать. http://browsers.about.com/od/googlechrome/ss/disable-javascript-chrome-windows.htm

Ответ 3

Имел ту же проблему с веб-сайтом.

CSS не может решить эту проблему, поскольку Javascript вступает в игру всякий раз, когда вы пытаетесь для выбора текста.

Есть два способа решить эту проблему 1) Отключите Javascript в своем веб-браузере. Проверьте это для справки. http://browsers.about.com/od/googlechrome/ss/disable-javascript-chrome-windows.htm 2) Откройте консоль javascript. Я использую хром (нажмите shift + command + C на Mac, f12 на Ubuntu и Windows)

скопируйте этот код document.body.onselectstart = function() {return true;}; и вставьте его в консоль и нажмите enter.

Ответ 4

Веб-сайты всегда могут найти способы быть неприятными. Все, что им нужно сделать, это поместить прозрачные изображения поверх вещей или поместить текст в изображения, и вы будете немного замедлиться.

Откажитесь от беспокойства. Firefox 4+ дает вам возможность снова щелкнуть правой кнопкой мыши, чтобы приложения не могли вырвать их у вас. Если вы считаете, что сайт является настолько неприятным, то прекратите его использовать и поддержите какой-нибудь другой сайт, который не является настолько неприятным, или перестанет пытаться принять то, что они не хотят вас принимать. Если страница не является динамически построенной из JS, вы всегда можете получить текст из источника страницы. Я говорю, что вы должны прекратить использовать сайты, которые вас раздражают. Если бы все это сделали, им пришлось бы изменить свои пути.

Ответ 5

Видите те же раздражающие js и более на другом сайте:

<script type="text/javascript" language="JavaScript">
function disableText(e){
  return false
}
function reEnable(){
  return true
}
//For browser IE4+
document.onselectstart = new Function ("return false")

//For browser NS6
if (window.sidebar){
  document.onmousdown = disableText
  document.onclick = reEnable
}
</script>
<script language="JavaScript1.2">
var msgpopup="";
function pmb(){
      if(alertVis == "1") alert(message);
          if(closeWin == "1") self.close();
          return false;
}
function IE() {
     if (event.button == "2" || event.button == "3"){pmb();}
}
function NS(e) {
     if (document.layers || (document.getElementById && !document.all)){
          if (e.which == "2" || e.which == "3"){ pmb();}
     }
}
document.onmousedown=IE;document.onmouseup=NS;document.oncontextmenu=new Function("alert(msgpopup);return false")

</script>
<script type="text/javascript">
function disableSelection(target){
if (typeof target.onselectstart!="undefined") //For IE
    target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //For Firefox
    target.style.MozUserSelect="none"
else //All other route (For Opera)
    target.onmousedown=function(){return false}
target.style.cursor = "default"
}

</script>

Обратите внимание, что все обработчики событий либо привязаны к document вручную, либо disableSelection(document.body). Таким образом, script, на который ссылается @alan-h, который позволяет событиям мыши, также необходимо обновить для работы на документе и document.body. (re: el.onselectstart = el.ondragstart = el.ondrag = el.oncontextmenu = el.onmousedown = el.onmouseup = function(){return true};)