Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Отмена контекстного меню в Mozilla и Opera
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (1): [1] 

> Описание: Вопрос
Самоделкин
Отправлено: 05 Июня, 2007 - 18:30:28
Post Id



Junior Member


Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2005  

Карма 1




Мне нужно вывести на странице вместо контекстного меню шуточное сообщение. Покопавшись в сети, соорудил скрипт, который правильно работает в IE и NN, в Мозилле же выдаёт мой алерт вместе с контекстным меню, а в Опере вообще не работает. Никакой инфы на мою тему по этим браузерам я пока не нашёл.
Вот скрипт:
CODE:
<script type="text/javascript">
var message="Здрасте-мордасти, скрипт-скрипт!\n\nВход не для всех.\nТолько для сумасшедших.";
var e
function myclick(e) {
if (document.all)
{if (event.button == 2)
{alert(message);return false;}
}
else {
{if (e.which == 3)
{document.body.setAttribute("oncontextmenu", "return false;");
alert(message);return false;}
}
}
}
if (!document.all)
{document.captureEvents(Event.MouseDown);}
document.onmousedown=myclick;
</script>

(Добавление)
Капельку улучшил скрипт. Теперь в Мозилле контекстное меню появляется по крайней мере после закрытия алерта, а не одновременно. Но всё равно выскакивает, зараза.
CODE:
<script type="text/javascript">
var message="Здрасте-мордасти, скрипт-скрипт!\n\nВход не для всех.\nТолько для сумасшедших.";
function myclickIE() {
if (document.all)
{if (event.button == 2)
{alert(message); return false;}
}
}
function myclickNS(e) {
if (document.layers||(document.getElementById&&!document.all))
{if (e.which==2||e.which==3)
{alert(message); return false;}
}
}
if (document.layers)
{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=myclickNS;}
else{
if(!document.all){document.onmouseup=myclickNS} else{document.onmousedown=myclickIE;}
}
document.oncontextmenu=new Function("return false")
</script>

(Отредактировано автором: 05 Июня, 2007 - 18:32:02)

 
 Top
Самоделкин
Отправлено: 05 Июня, 2007 - 21:23:58
Post Id



Junior Member


Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2005  

Карма 1




С Мозиллой разобрался:
CODE:
<script>
var message="Здрасте-мордасти, скрипт-скрипт!\n\nВход не для всех.\nТолько для сумасшедших.";
if (!document.all) {
window.addEventListener("click", cm, false);
window.addEventListener("dblclick", cm, false);
}
function cm(e) {

if (e.button == 2) {
e.preventDefault();
alert(message);
}
return true;
}

if (document.all)
{document.oncontextmenu=new Function("alert(message); return false")}
</script>

А вот с Оперой пока глухо.
 
 Top
Furax
Отправлено: 05 Июня, 2007 - 23:39:03
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Самоделкин
В Опере есть галочка "разрешить сценариям управлять контекстными меню", т. е. если она не стоит, то ты ничего сделать не сможешь (разве что попросить поставить). А вообще, если попросту, то надо делать return false по таким событиям, как onclick, onmouseup (в этих двух не помешает проверка на номер кнопки) и oncontextmenu. Ну, чтобы уж совсем хорошо жилось, можно ещё и oncontrolselect обработать, хотя этого никто обычно не делает...
 
 Top
Самоделкин
Отправлено: 06 Июня, 2007 - 03:33:25
Post Id



Junior Member


Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2005  

Карма 1




Спасибо. Поставил галку - и с первоначальным скриптом всё работает. В общем, пока скомбинировал из этих скриптов нечто топорное, но везде работающее. Мжет быть, почищу, а может - и нет.
closed

(Отредактировано автором: 06 Июня, 2007 - 04:08:05)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« JavaScript »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0376]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33