Можно ли отключить Ctrl + F поиска на странице? - PullRequest
18 голосов
/ 17 августа 2011

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

Ответы [ 9 ]

71 голосов
/ 17 августа 2011

Код

window.addEventListener("keydown",function (e) {
    if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) { 
        e.preventDefault();
    }
})
18 голосов
/ 17 августа 2011

Вместо того, чтобы отключить функцию Find, вы можете сделать так, чтобы Find не нашел слова!Один из способов сделать это - использовать объявление CSS content для вставки слов.Find не найдет их:

<div class="word-foobar"></div>

.word-foobar:before {
    content: "Foobar";
}

Вы можете довольно легко написать Javascript для автоматического создания всех необходимых вам правил CSS.

7 голосов
/ 17 августа 2011

Вы можете отключить сочетание клавиш в большинстве браузеров (IE9, Firefox, Chrome, Opera), но вы не можете остановить кого-то, использующего Find, щелкнув его в браузере.

Вот некоторый JavaScript на основе jQuery, который делает это:

$(window).keydown(function(e){
    if ((e.ctrlKey || e.metaKey) && e.keyCode === 70) {
        e.preventDefault();
    }
});

Взято из http://caniuse.com/,, где эта функция регулярно раздражает меня. На этом сайте он используется для того, чтобы CTRL + F выполнял пользовательский поиск на странице вместо полного его отключения.

4 голосов
/ 17 августа 2011

Я не думаю, что есть способ полностью отключить эту функцию, и не должно быть , чтобы ее отключить.

Однако вы можете убедиться, что какой-либо текст не будет найден с помощью Ctrl + F , написав его так, чтобы браузер не считал непрерывный текст .

Использование изображений - это сравнительно простой подход.

В качестве альтернативы вы можете рандомизировать буквы и переставлять их с помощью некоторой магии CSS (мой CSS-фу слишком слаб, чтобы привести пример, к сожалению). Например, если вы хотите «спрятать» слово «привет», напишите «lehol» каждой буквой в отдельном <div> и примените несколько стилей CSS, чтобы визуально буквы были в правильном порядке.

Обратите внимание, что это (и, вероятно, все другие рабочие решения) также также прервет копирование и вставку текста.

3 голосов
/ 12 марта 2012

Вот плагин jQuery , который делает то, что вы ищете.

2 голосов
/ 17 августа 2011

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

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

1 голос
/ 17 августа 2011

вы можете сделать это с помощью javascript - это всего лишь псевдокод (написанный на jQuery), так как я не уверен, как слушать ctrl и a f, но вы понимаете:

$(body).keypress(function(e)
{
    if (e.keyCode===17)
    {
        //ctrl has been pressed, listen for subsequent F press (keyCode 70)
        //if next keyCode===70
        return false;
    }
});

Возврат false, как это, остановит браузер, когда я нажимаю клавиши, что-либо делать, насколько я знаю. Вы также можете использовать e.preventDefault();, чтобы предотвратить что-либо, если return false; недостаточно.

Надеюсь, это поможет

0 голосов
/ 13 ноября 2015

Почему бы не использовать Shadow DOM?Это позволит вашему контенту быть недоступным для поисковых систем или программ для чтения с экрана.И имеет дополнительный бонус того же поведения для пользователя.

Посмотрите здесь для получения дополнительной информации: Введение в Shadow DOM

0 голосов
/ 17 августа 2011

Нет.Замена изображениями - это самый быстрый и безопасный способ.(Если вы не хотите переключаться на Flash / Java-апплет / и т.д.)

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