1. 程式人生 > >Opera下自定義右鍵選單的研究

Opera下自定義右鍵選單的研究

提醒:本文最後更新於 3805 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

Opera是一個來自挪威的瀏覽器,有著優秀的快取機制,瀏覽網頁速度很快,有著自己龐大的粉絲群。但是opera並沒有支援上下文選單事件,也就是說我們通常使用的依靠在頁面中重寫oncontextmenu事件來實現自定義右鍵選單的方法不會工作。那麼,有沒有別的方法來實現自定義選單呢?

我們來看看三個著名的產品(FckeditorYUIGoogle Doc)怎麼解決opera沒有oncontextmenu事件這個問題:

Fckeditor:Fckeditor這個開源的編輯器我想不用多介紹了吧,它的最新版本已經支援了opera。那麼它是怎麼處理右鍵選單的呢?分析原始碼可以知道,它註冊了onmousedown事件,並且判斷滑鼠按下的是不是右鍵,如果是就顯示自定義選單。這樣看似很完美,但是有兩個致命的弱點:1.預設情況下opera是不檢測滑鼠右鍵點選的,也就是右鍵按下時根本不觸發mousedown事件。除非在“工具”-“首選項”-”高階”-”內容”-“Javascript選項”中勾選“允許指令碼檢測右鍵單擊”;2.opera自身的上下文選單會跟自定義選單一起出現,也就是說無法preventDefault。這個問題解決起來有一點點巧妙,經過實驗我們可以發現,opera下在type等於button的input上點選右鍵不會出現系統上下文選單,於是我們可以在mousedown時在滑鼠下放一個幾乎透明的type=button的input,再在mouseup的時候隱藏這個button。

YUI的MENU元件:YUI是一個先進的介面庫,功能強大,使用簡便。那麼他是怎麼解決這個問題的呢?相比於FCKEditor,YUI換了另外一種思路,既然Opera預設不支援檢測右鍵點選,那就用左鍵點選來代替總可以吧,但是這樣顯然會干擾使用者正常操作,於是YUI又加了一條規則,按下ctrl鍵的同時點選左鍵才等同於右鍵。“Hold down the control key and click with the left mouse button.”

Google Doc:Google出品的web office套件。Google的技術不用懷疑,那麼他是怎麼解決這個問題的呢?答案是:既然不能完美解決,乾脆就不解決。反正Google Doc的所有操作都不是隻有右鍵選單才能完成。不愧是Google!

--EOF--

提醒:本文最後更新於 3805 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

相關推薦

Opera定義選單研究

提醒:本文最後更新於 3805 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 Opera是一個來自挪威的瀏覽器,有著優秀的快取機制,瀏覽網頁速度很快,有著自己龐大的粉絲群。但是opera並沒有支援上下文選單事件,也就是說我們通常使用的依靠在頁面中重寫oncontextmenu事件來實現自定義右

win10新增定義選單

如果你想實現在檔案上點選右鍵,選擇右鍵快捷方式裡一個軟體來開啟它,但是右鍵選單裡沒有這個軟體的快捷方式(比如免安裝版的UltraEdit),如下是步驟 1、“windows鍵+R”開啟執行視窗,輸入regedit,然後點選“確定”開啟登錄檔(有的家庭版的系統沒有登錄檔許可權,先升級系統吧)

jxbrowser 實現定義選單 jxbrowser破解版請聯絡作者

QQ 921888199 public static void main(String[] args) { JPopupMenu.setDefaultLightWeightPopupEnabled(false); Browser browser =

Windows定義選單,多級選單

--------------如果覺得博主寫的可以,請關注博主-------------- 首先 win + r   輸入 regedit 進去登錄檔 然後 # HKEY_CLASSES_ROOT\*\shell  在shell 建立一個你想要的右鍵檔案  例如:K

js定義選單,點選定義選單隱藏、顯示指定div

       首先寫好自己想要的右鍵選單的樣子,然後設定該選單div為預設隱藏,滑鼠右擊後設置css顯示該選單(display:block;),並禁用瀏覽器右鍵預設選單。 接下來就可以寫選單中具體項的

JS學習筆記 - 定義選單、文字框只能輸入數字

  <script> // 事件總共有2個部分, //1.點選滑鼠右鍵的表現 oncontextmenu 2.點選滑鼠左鍵的表現(即普通點選onclick) // 點選右鍵,div位置定位到滑鼠所在位置, 且阻止滑鼠右鍵的預設選單 // 點選左

antd Tree元件中,定義選單

最近專案中,有一個需求是自定義antd的Tree元件的右鍵選單功能。 直接上程式碼 class Demo extends Component { state = { rightClickNodeTreeItem: { pageX: "", pageY: "",

使定義選單快捷生效

function TCustomThumbView.IsMenuKey(var Message: TWMKey): Boolean; var LocalPopupMenu: TPopupMenu; begin Result := True; if not (csDesigning in

jxbrowser 實現定義選單 jxbrowser破解版請聯絡作者

QQ 921888199 public static void main(String[] args) { JPopupMenu.setDefaultLightWeightPopupEnabled(false); Browser bro

遮蔽瀏覽器選單功能,定義選單(相容IE8)

做了個自定義右鍵選單的功能,和獲取選中文字內容相關,一起記錄一下。 網上查閱嘗試了很多方式,選擇了一個較為簡潔的方式實現,程式碼很少,進行細節調整後發現存在IE8相容性問題,又查閱資料後進行了優化,目前可以完美相容IE8,但注意jQuery版本必須1.7+,我

javascript定義選單並遮蔽預設選單【原創】

原理很簡單,就是右擊滑鼠(oncontextmenu事件)return false阻止預設右鍵選單,之後顯示自定義的右鍵選單,選單顯示位置由事件源的clientX和clientY計算得出。 [html] view plain copy  print?

【Unity編輯器】使用反射和Attribute實現定義選單

unity提供了許多Attribute,比如[MenuItem]和[ContextMenu],一個是在編輯器選單欄中新增選單按鈕,一個是在檢視面板新增上下文選單,由於其原理是基於C#的Attribute功能,我們自然可以想到,是否可以自己編寫一套自定義Attribute,來

JS定義選單—複製到貼上板(jQuery和原生JS實現)

##自定義右鍵選單——複製到貼上板 ####需求: 滑鼠在li標籤上點選右鍵出現選單,主要是複製等功能 遮蔽瀏覽器預設右鍵點選事件 右鍵選單出現在滑鼠點選的位置 點選螢幕其他位置選單消失

WPF 定義選單樣式

<!--自定義ContextMenu的外觀樣式--> <Style TargetType="{x:Type ContextMenu}"> <Setter Property="SnapsToDevicePixels" Value="True"/> <S

js實現定義選單

JavaScript實現自定義右鍵選單,思路如下: 1. 遮蔽預設右鍵事件; 2. 隱藏自定義的選單模組(如div、ul等); 3. 右鍵點選特定或非特定區域,顯示選單模組; 4. 再次點選,隱藏選單

谷歌地圖,標記、多邊形繪製、地址搜尋、定義選單

<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>谷歌地圖測試</title> <meta

JS簡單實現定義菜單

ans idt 右鍵 動畫 忘記 span spa round 部分 RT,一個簡單的例子,僅僅講述原理 <div id="menu" style="width: 0;height: 0;background: cadetblue;position: absolu

HTML定義菜單oncontextmenu

click isp 樣式 true 菜單 menu tro ret 自定義 右鍵菜單原理:取消右鍵菜單oncontextmenu的默認事件,然後添加自定義樣式。 一、阻止默認事件 ie: window.event.returnValue = false; w3c: wind

定義菜單

css contex eight scrip als abs 剪切 his pad   本功能主要是實現自定義右鍵菜單,同時隱藏默認的右鍵菜單,只顯示自己需要的菜單   HTML:    1 <!--自定義右鍵菜單html代碼--> 2 <div

js之定義菜單

add 時鐘 type ref 留言板 back left 創建 cor <!doctype html> <html lang="en"> <head> <meta charset="UTF-8">