Как отключить копирование вставки (браузер) - PullRequest
10 голосов
/ 31 марта 2012

Я пробую 2 варианта:

  • Игнорировать щелчок правой кнопкой мыши
  • Игнорировать Ctrl + C , Ctrl + A

Это мой код:

function noMenu() {
  return false;
}
function disableCopyPaste(elm) {
  // Disable cut/copy/paste key events
  elm.onkeydown = interceptKeys
  // Disable right click events
  elm.oncontextmenu = function() {
    return false
  }
}
function interceptKeys(evt) {
  evt = evt||window.event // IE support
  var c = evt.keyCode
  var ctrlDown = evt.ctrlKey||evt.metaKey // Mac support
  // Check for Alt+Gr (http://en.wikipedia.org/wiki/AltGr_key)
  if (ctrlDown && evt.altKey) return true
  // Check for ctrl+c, v and x
  else if (ctrlDown && c==67) return false // c
  else if (ctrlDown && c==86) return false // v
  else if (ctrlDown && c==88) return false // x
  // Otherwise allow
  return true
}

А это мой HTML:

<body class="node88" oncontextmenu="return noMenu();" onkeydown="return disableCopyPaste();">

Функция noMenu() работает, но disableCopyPaste() не работает.

Ответы [ 9 ]

17 голосов
/ 31 марта 2012

Вы не можете.

Вы можете попытаться заблокировать некоторые векторы (например, взломать, чтобы затруднить щелчок правой кнопкой мыши, перехватывая ctrl + c ,затрудняет выделение текста) ... Но они будут только работать, и невозможно заблокировать все векторы (edit -> copy? view source? wget? etc…).

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

Если у вас есть конфиденциальный контент, который необходимо защитить, вы можете рассмотретьвстроить его в флэш-BLOB или DRM-PDF.Это все еще возможно для обратного инжиниринга, но потребуется немного более умный атакующий.

10 голосов
/ 31 марта 2012

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

<!-- Disable Copy and Paste-->
<script language='JavaScript1.2'>
function disableselect(e) {
    return false
}

function reEnable() {
    return true
}

document.onselectstart = new Function (&quot;return false&quot;)

if (window.sidebar) {
    document.onmousedown = disableselect
    document.onClick = reEnable
}
</script>

Поместите это в ваш

    <head> </head> 

тегов, и пользователь не может выделить текст на вашей странице.

Найдено на http://myblog -log.blogspot.com / 2007/06 / disable-copy-and-paste.html

6 голосов
/ 10 мая 2014

Javascript:

//disable mouse drag select start

document.onselectstart = new Function('return false');

function dMDown(e) { return false; }

function dOClick() { return true; }

document.onmousedown = dMDown;

document.onclick = dOClick;

$("#document").attr("unselectable", "on"); 

//disable mouse drag select end

//disable right click - context menu

document.oncontextmenu = new Function("return false");


//disable CTRL+A/CTRL+C through key board start

//use this function


function disableSelectCopy(e) {

// current pressed key

    var pressedKey = String.fromCharCode(e.keyCode).toLowerCase();

    if (e.ctrlKey && (pressedKey == "c" || pressedKey == "x" || pressedKey == "v" || pressedKey == "a")) {

        return false;

    }

}

document.onkeydown = disableSelectCopy;


//or use this function

$(function () {

    $(document).keydown(function (objEvent) {

        if (objEvent.ctrlKey || objEvent.metaKey) {

            if (objEvent.keyCode == 65 || objEvent.keyCode == 97) {

                return false;

            }

        //}

        }

    });

});

CSS:

//disable selection through CSS for different browsers

#document, #ctl00_MasterPageBodyTag{
    user-select: none;
    -ms-user-select: none;
    -o-user-select:none;
    -moz-user-select: none;
    -khtml-user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
}

//where #document is the div for which select needs to be disabled and #ctl00_MasterPageBodyTag is the id of the body tag.
3 голосов
/ 20 июля 2015

Почему бы не попытаться сделать текст недоступным для выбора?

.unselectable {
  -webkit-user-select: none;  /* Chrome all / Safari all */
  -moz-user-select: none;     /* Firefox all */
  -ms-user-select: none;      /* IE 10+ */
  user-select: none;          /* Likely future */       
}


/*Mobile*/

-webkit-touch-callout: default   /* displays the callout */
-webkit-touch-callout: none      /* disables the callout */

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

https://css -tricks.com / copy-paste-the-web /

2 голосов
/ 14 октября 2017

Вы можете контролировать, какой текст помещается в буфер обмена:

document.addEventListener('copy', function(e) {
    e.clipboardData.setData('text/plain', 'Please do not copy text');
    e.clipboardData.setData('text/html', '<b>Please do not copy text</b>');
    e.preventDefault();
});

https://developer.mozilla.org/en-US/docs/Web/Events/copy

0 голосов
/ 26 июля 2018

Если вы ищете простой HTML, чтобы отключить COPY и PASTE для определенного элемента, используйте приведенный ниже код.Вы можете даже заблокировать всю страницу, поместив ее в тег body.

<div oncontextmenu="return false" onkeydown="if ((arguments[0] || window.event).ctrlKey) return false"></div>

oncontextmenu = "return false" onkeydown = "if ((arguments [0] || window.event).ctrlKey) вернуть false "

0 голосов
/ 13 июля 2018
$('some.selector').bind('cut copy paste', function (e) {
    e.preventDefault();
});

Это работает в Chrome, Firefox, Safari, IE11 и Edge. Для моего тестирования я работал с <div contenteditable>. Источник статьи:

https://www.codexworld.com/disable-mouse-right-click-cut-copy-paste-using-jquery

0 голосов
/ 22 мая 2018

Сайт True Copy Protection

http://www.securebit.xyz/

Посетите образец страницы для проверки, прежде чем объявить ее спамом или рекламой. Попробуйте скопировать содержимое со страницы примера.

http://www.securebit.xyz/

Для получения более подробной информации и информации о покупке, пожалуйста, напишите нам по адресу websecurecontent@protonmail.com

Преимущества

Поддержка всех языков (английский, хинди, тамильский, малаялам и т. Д.) Поддержка всех CMS, включая Wordpress, Drupal, Joomla и т. Д. Содержимое не может быть скопировано из источника страницы. Содержимое не может быть скопировано с помощью инструментов разработчика. Содержимое не может быть скопировано с помощью каких-либо дополнений / расширений в любом браузере. Содержимое не может быть скопировано путем отключения javascript.

0 голосов
/ 24 августа 2017

Вы можете использовать CSS, чтобы запретить выделение текста, поэтому никаких шансов на копирование текста не будет.

Добавьте нижеприведенные CSS и JS в тело:

CSS:

    <style>
    .unselectable
    {
        -moz-user-select:none;
        -webkit-user-select:none;
        cursor: default;
    }
    html
    {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        -khtml-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        -webkit-tap-highlight-color: rgba(0,0,0,0);
    }
</style>

JS:

<script id="wpcp_css_disable_selection" type="text/javascript">
var e = document.getElementsByTagName('body')[0];
if(e)
{
    e.setAttribute('unselectable',on);
}
</script>
...