Недавно, когда я делал небольшую вещь, мне нужно было «щелкнуть правой кнопкой мыши» по элементу, чтобы запустить пользовательское меню, и отредактировать правой кнопкой мыши через пользовательское меню. Это требует блокировки меню по умолчанию правой кнопкой мыши
Элементы ниже IE и FF имеют метод OnContextMenu. При FF вы можете легко достичь этого эффекта, используя метод Event.PreventDefault (). Т.е. не поддерживает этот метод. В соответствии с IE событие по умолчанию обычно блокируется путем запуска метода и возврата FALSE.
Обычно мы используем событие правой кнопкой мыши, чтобы блокировать глобальный блок, то есть щелкнуть правой кнопкой мыши на уровне документа. Теперь эффект, который я хочу достичь, состоит в том, чтобы заблокировать событие правой кнопки по умолчанию только в определенной области, в то время как другие области не влияют на него.
Благодаря экспериментам я обнаружил, что если возврат false в связанном методе в соответствии с IE может достичь поведения по умолчанию блокировки правого щелчка на уровне документа. Однако, если конкретный элемент, такой как Div, является недействительным.
Наконец, через поисковое руководство я обнаружил, что объект события под IE имеет свойство returnValue. Если это свойство установлено на false, событие правой кнопки по умолчанию не будет запускается. Похоже на следующее:
Кода -копия выглядит следующим образом:
event.returnValue = false;
Просто добавьте это предложение, чтобы достичь желаемого эффекта. Полный демонстрационный код:
<! Doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> xmlns = "http://www.w3.org/1999/xhtml"> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> <Title> блокировать кнопку правой мыши Default на элементе demo </title> <stleor> {Font-size; высота линии: 24px; Фамилическая семья: arial, helvetica, sans-serif;}#Activearea {ширина: 300px; высота: 200px; Фон:#06c; Color: #fff;}#cstcm {width: 120px; Фон: #EEE; Граница: 1PX SOLID #CCC; позиция: абсолютно; } #cstcm ul {margin: 0; Padding: 0;}#cstcm ul li {list-style: none; Заполнение: 0 10px; Cursor: по умолчанию;}#cstcm ul li: Hover {founale:#009; Color: #ffff;}. Splittop {border-bottom: 1px solid #ccc;}. Splitbottom {border-top: 1px solid #fff;} </style> <script> function customcontextmenu (event) {event.preventdefault? event.preventDefault () :( event.returnValue = false); var cstcm = document.getElementbyId ('cstcm'); cstcm.style.left = event.clientx + 'px'; cstcm.style.top = event.clienty + 'px'; cstcm.style.display = '; clearcustomcm;} function clearcustomcm () {document.getElementById ('cstcm'). style.display = 'none'; document.onmousedown = null;} </script> </head> <body> <div Id = "cstcm" style = "display: none; </Li> <li> Обновление </li> <li> вставка </li> <li> вставьте сочетание </li> <li> свойство </li> </ul> </div> <div id = "actiearea" oncontextmenu = "customconcontextmenu (Event)"> Custom Context Menu Area </div> </body> </html>Этот эффект совместим с IE6+ и FF, но Opera вообще не имеет метода OnContextMenu, поэтому он не может быть просто реализован с помощью этого метода. Чтобы достичь этого, необходимы другие средства.