Autor | Zpráva | ||
---|---|---|---|
Jan Tvrdík Profil |
#1 · Zasláno: 23. 6. 2008, 17:09:32
Existuje způsob, jak zablokovat kontextové menu (při stisku pravého tlačítka) v Opeře?
Následující kód funguje ve FF, ale nefunguje v Opeře. <div style="width: 200px; height: 200px; background-color: blue;" oncontextmenu="return false;" onmousedown="boxMouseRightClick(event);" ></div> <script> function boxMouseRightClick(event) { if(event.button != 2) return; event.target.style.backgroundColor = 'red'; } </script> |
||
Str4wberry Profil |
#2 · Zasláno: 23. 6. 2008, 17:29:21
Kdyby sis v Opeře zaškrtl „Povolit skriptu přijímat kliknutí pravým tlačítkem myši“, možná by to šlo.
|
||
Bubák Profil |
#3 · Zasláno: 23. 6. 2008, 17:32:01
Hlavní problém je, že ve výchozím nastavení prohlížeče Opera je volba Povolit scriptu příjimat klepnutí pravým tlačítkem myši vypnutá.
|
||
Jan Tvrdík Profil |
#4 · Zasláno: 23. 6. 2008, 18:25:14
Voba „Povolit skriptu přijímat kliknutí pravým tlačítkem myši“ se postará pouze o to, že se spustí boxMouseRightClick, ale nepostará se o zablokování kontextového menu.
|
||
Bubák Profil |
#5 · Zasláno: 23. 6. 2008, 19:54:28
Já si myslí, že to nepůjde, přesněji ani Seznamu se to na Mapy.cz nepodařilo zablokovat.
|
||
peta Profil |
#6 · Zasláno: 24. 6. 2008, 07:54:34
Jan Tvrdík
zkusil bych se podivat, jak to resi fck editor nebo tinymcf. Jestli jim to tam funguje, pak ta moznost je. function boxMouseRightClick(event) { if(event.button != 2) return; event.target.style.backgroundColor = 'red'; } je totez jako function boxMouseRightClick(event) { if(event.button != 2) {return true;} event.target.style.backgroundColor = 'red'; return true; } a muzes zkusit tudiz function boxMouseRightClick(event) { if(event.button != 2) {return false;} event.target.style.backgroundColor = 'red'; return false; } |
||
Jan Tvrdík Profil |
#7 · Zasláno: 24. 6. 2008, 15:09:53 · Upravil/a: Jan Tvrdík
peta
Díky za radu. V TinyMCE kontextové menu v Opeře nefunguje, ale v FCKeditoru funguje -> musí existovat nějaký způsob, jak to napsat. Otázka je, jak čistě a zda se mi to někdy podaří ze zdrojových kódu FCKeditoru vytáhnout. EDIT: Naděje vkládám hlavně do http://svn.fckeditor.net/FCKeditor/trunk/editor/_source/classes/fckcon textmenu.js |
||
Jan Tvrdík Profil |
#8 · Zasláno: 24. 6. 2008, 15:35:23 · Upravil/a: Jan Tvrdík
Výše uvedený skript skutečně obsahoval řešení. Už jsem myslel že žádné neexistuje.
Řešení <div style="width: 200px; height: 200px; background-color: blue;" oncontextmenu="return false;" onmousedown="boxMouseRightClick(event); killContextMenu(event)" ></div> <script> function boxMouseRightClick(event) { if(event.button != 2) return false; event.target.style.backgroundColor = 'red'; } var overrideButton; function killContextMenu( e ) { if( !e || e.button != 2 ) return false ; var el = e.target ; if (!overrideButton) { overrideButton = document.createElement('input'); overrideButton.type = 'button'; var buttonHolder = document.createElement('p'); document.body.appendChild( buttonHolder ); buttonHolder.appendChild( overrideButton ) ; } overrideButton.style.cssText = 'position:absolute;top:' + ( e.clientY - 2 ) + 'px;left:' + ( e.clientX - 2 ) + 'px;width:5px;height:5px;opacity:0.01' ; return false ; } </script> Jak to funguje Vloží na kliknutou pozici neviditelné tlačítku, které kliknutí "absorbuje". |
||
Časová prodleva: 16 let
|
0