Как отключить копирование/вставку и/или щелчок правой кнопкой мыши на конкретном слове?

Вопрос или проблема

Я хочу защитить от копирования и вставки/правого клика только содержимое этого пользовательского поля:

$cin = esc_html__(get_post_meta( $post->ID, 'cin_code', true), 'sacconicase');

До сих пор я нашел решения только для всего содержимого сайта, такие как этот java, который нужно поместить в папку js

document.addEventListener( 'contextmenu', function(e) {
                              e.preventDefault();
                            }, false);

.

Ответ или решение

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

Шаг 1: Обертывание контента в HTML элемент

Сначала нам нужно обернуть ваш код в HTML элемент, чтобы иметь возможность применять к нему JavaScript. Например, вы можете использовать <span> или <div> с уникальным идентификатором или классом.

<p>
    Защищенный код: <span id="cin-code"><?php echo esc_html__(get_post_meta($post->ID, 'cin_code', true), 'sacconicase'); ?></span>
</p>

Шаг 2: Использование JavaScript для отключения правого клика и отмены копирования

Теперь давайте добавим JavaScript в вашу страницу, чтобы отключить контекстное меню и предотвратить копирование текста внутри этого элемента. Вы можете добавить этот код в отдельный файл JavaScript или встроить прямо в HTML-код вашей страницы.

<script>
    document.addEventListener('DOMContentLoaded', function() {
        var cinCodeElement = document.getElementById('cin-code');

        cinCodeElement.addEventListener('contextmenu', function(e) {
            e.preventDefault(); // Отключить правый клик
        });

        cinCodeElement.addEventListener('copy', function(e) {
            e.preventDefault(); // Отключить копирование
            alert('Копирование текста не разрешено!'); // Сообщение пользователю
        });

        // Дополнительно можно отключить выделение текста
        cinCodeElement.style.userSelect = 'none'; // Отключить выделение
    });
</script>

Шаг 3: Встраивание в WordPress

Если вы используете WordPress, вы можете вставить данный код в файл вашей темы (например, footer.php) или использовать специальный плагин для добавления собственных скриптов. Убедитесь, что JavaScript загружается после загрузки HTML-контента.

Объяснение кода

  1. Отключение правого клика: Первый обработчик события contextmenu предотвращает отображение контекстного меню, когда пользователь пытается щелкнуть правой кнопкой мыши по элементу с идентификатором cin-code.

  2. Предотвращение копирования: Второй обработчик события copy блокирует попытки копирования текста из этого элемента и показывает предупреждающее сообщение.

  3. Отключение выделения текста: Это действие предотвращает выделение текста, что делает его менее доступным для копирования.

Примечание

Несмотря на то, что такое решение может ограничить возможность пользователей копировать определённый текст, следует понимать, что оно не является абсолютно надежным. Более опытные пользователи все равно могут найти способы обойти данные ограничения, например, через инструменты разработчика в браузере.

Заключение

Ваша задача по защите контента может быть выполнена с помощью простых решений на JavaScript. Главное — правильно привязать скрипты к нужному элементу, чтобы ваше пользовательское поле оставалось защищённым от копирования и вставки. Не забывайте об пользовательском опыте и всегда информируйте пользователей о действиях, которые вы предпринимаете для защиты контента.

Оцените материал
Добавить комментарий

Капча загружается...