Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отмена щелчка правой кнопки мыши
 
 автор: kosta_in_net   (27.03.2014 в 22:17)   письмо автору
 
 

Задача запретить сохранение картинок с веб-страниц по щелчку правой кнопки мыши. Понятно, что, кто понимает, в чем дело. сохранит (то ли выполнение скриптов остановит, то ли сохранит страницу с рисунками и возьмет оттуда, то ли принтскрин+фотошоп+сохранить. Но банальное сохранение правой кнопкой нужно отключить.
Ранее с кликами работать не приходилось. Порылся в сети, нашел описания... Думал сделать так:
function blockMenu(evt){    
    evt = (evt) ? evt : window.event;
    var target = evt.target || evt.srcElement;
    if(evt.button == 2 && target.tagName.toLowerCase()=='img'){
        return false;      
    }
}   
document.onmousedown = function()  {blockMenu(); return false;};


Или что-то вроде того. Но не помогает.
Большая просьба, кто силен в этом, помогите решить задачу

Фактически проблема в том, что не работает
evt = (evt) ? evt : window.event;

  Ответить  
 
 автор: Deed   (28.03.2014 в 00:54)   письмо автору
 
   для: kosta_in_net   (27.03.2014 в 22:17)
 

$('img').bind('contextmenu', function(e){
return false;
});

Или "чистый" JS: http://jsbin.com/doqat/1/edit?js,output

function nocontext(e) {
var clickedTag = (e===null) ? event.srcElement.tagName : e.target.tagName;
if (clickedTag == "IMG") {
return false;
}
}
document.oncontextmenu = nocontext;

  Ответить  
 
 автор: kosta_in_net   (28.03.2014 в 01:34)   письмо автору
 
   для: Deed   (28.03.2014 в 00:54)
 

Спасибо. Но есть пара моментов:
В ИЕ6 на этой стадии:
var evt = (e===null) ? event : e;
alert(evt);
дает undefined. То есть, ни e, ни event ишак не видит

в Опере 9.5 вообще не реагирует на событие.

Может есть что-то более кросбраузерное?

  Ответить  
 
 автор: confirm   (28.03.2014 в 02:08)   письмо автору
 
   для: kosta_in_net   (28.03.2014 в 01:34)
 

<img src="" oncontextmenu="alert('Not');return false" />

  Ответить  
 
 автор: kosta_in_net   (28.03.2014 в 02:34)   письмо автору
 
   для: confirm   (28.03.2014 в 02:08)
 

в ИЕ 6.0 добился результата:
function nocontext(evt) {
    var evt = (evt) ? evt : window.event;
    var target = evt.target || evt.srcElement;
    if(target.tagName.toLowerCase()=='img'){
        return false;      
    }
}
document.oncontextmenu = nocontext;


В опере 9.5 не хочет :(

Вставка непосредственно в тег не помогает

  Ответить  
 
 автор: confirm   (28.03.2014 в 02:39)   письмо автору
 
   для: kosta_in_net   (28.03.2014 в 02:34)
 

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

  Ответить  
 
 автор: kosta_in_net   (28.03.2014 в 16:44)   письмо автору
 
   для: confirm   (28.03.2014 в 02:39)
 

Старый сайт. Чтоб не переделывать все, решил сделать единый скрипт, отлавливающий именно картинки. В Опере 9.5 пока не удалось, а в остальных браузерах запрет правой кнопки на картинке работает

  Ответить  
 
 автор: confirm   (28.03.2014 в 16:54)   письмо автору
 
   для: kosta_in_net   (28.03.2014 в 16:44)
 

Я вам уже написал - выбрасывайте oncontextmenu и обрабатывайте нажатия кнопок мыши.

  Ответить  
 
 автор: kosta_in_net   (28.03.2014 в 17:01)   письмо автору
 
   для: confirm   (28.03.2014 в 16:54)
 

я и начинал с обработки кнопок:
function blockMenu(evt){    
    evt = (evt) ? evt : window.event;
    var target = evt.target || evt.srcElement;
    if(evt.button == 2 && target.tagName.toLowerCase()=='img'){
        return false;      
    }
}   
document.onmousedown = function()  {blockMenu(); return false;}; 

Только ничего не вышло :(
Уверен, что вы в яваскрипте сильнее меня. Помогите. Но цель такова: чтобы не переделывать весь сайт, просто добавить скрипт, который запретит щелчок правой кнопки мыши на изображениях.

  Ответить  
 
 автор: confirm   (28.03.2014 в 17:12)   письмо автору
 
   для: kosta_in_net   (28.03.2014 в 17:01)
 

Номер кнопки у браузеров будет различен. tagName.toLowerCase() - это зачем? Что сложно писать в верхнем регистре тем самым экономя на одном методе?

Ищите здесь и о событиях, и прочем.

  Ответить  
 
 автор: kosta_in_net   (28.03.2014 в 17:23)   письмо автору
 
   для: confirm   (28.03.2014 в 17:12)
 

toLowerCase, конечно, не обязателен. На http://javascript.ru/ я искал. В итоге получил то, что получил. Потому и решил обратиться к тем, кто имеет опыт решения данной задачи.

  Ответить  
 
 автор: psychomc   (28.03.2014 в 10:32)   письмо автору
 
   для: kosta_in_net   (28.03.2014 в 01:34)
 

оу, под ие6 уже давно никто не верстает

  Ответить  
 
 автор: elenaki   (28.03.2014 в 12:19)   письмо автору
 
   для: psychomc   (28.03.2014 в 10:32)
 

тем более, не отменяет щелчки. типа, нажать можно, а вот щелчок - отменить.

  Ответить  
 
 автор: kosta_in_net   (28.03.2014 в 16:42)   письмо автору
 
   для: psychomc   (28.03.2014 в 10:32)
 

Речь о старом сайте. В ИЕ6 удалось запретить сохранение картинок. В Опере 9.5 пока не удается

  Ответить  
 
 автор: Саня   (28.03.2014 в 15:28)   письмо автору
 
   для: kosta_in_net   (27.03.2014 в 22:17)
 

Проще поверх картинок растягивать однопиксельный прозрачный gif.

  Ответить  
 
 автор: elenaki   (28.03.2014 в 16:22)   письмо автору
 
   для: Саня   (28.03.2014 в 15:28)
 

... с логотипом или чем-то еще портящим весь вид. А printscreen? Легче вообще не выкладывать.

  Ответить  
 
 автор: Саня   (28.03.2014 в 17:12)   письмо автору
 
   для: elenaki   (28.03.2014 в 16:22)
 

ТС сразу написал, что понимает бесполезность этой затеи против знающих людей.
Вот я и предложил более простую альтернативу js.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования