参考 msdn library【adding entries to the standard context menu】开发 contextmenu
1. ie 额外的 contextmenu 是透过註册机码 hkey_current_user\software\microsoft\internet explorer\menuext 来建立
2. 所以只要在该位置下新增一个 key 值,例如:新增【make 0rz】则 ie 中按下右键就会出现相同名称的功能
3. 如果我们想要在该功能上可以使用快捷键,就如同开发 windows form 一样,只要在英文名称前加上 & 符号即可。
例如:我们把 key 值从【make 0rz】改為【&make 0rz】,则当 contextmenu 出现按下 m 就是执行该项功能
4. 在该 key 值底下,有一个重要键值是 contexts,主要的功能是定义 contextmenu 出现的时机
包含:default(预设载入)、images(在图片上)、control(任一控制项上)、tables(在表格格上)、text selection(纯文字反白选择时)、anchor(在连结上)
如果 contextmenu 要包含两种以上的出现时机,则将 value 自行做 logic or 计算再带入即可
例如:在本范例中,我们可以新增一个 dword 型态,名称 contexts、值為 23 的键值。则表示该 contextmenu 【预设载入】、【在连结上】、【在图片上】按下右键,就会出现【make 0rz】的功能。
5. 另外还有 (default) 这个键值,该键值填入的内容就是使用者执行 contextmenu 功能时交给谁来处理,可能是 .html、.exe、.dll…. 等等。
例如本范例中,我想要呼叫 javascript 来执行功能,所以就填入【file://c:\program files\make0rz.js】
6. 這樣大致上,就算是完成註冊機碼的部份。我們透過製作 .reg 檔案方便讓使用者來進行安裝,以下是本範例 regmake0rz.reg 檔案:
复制代码 代码如下:
windows registry editor version 5.00 [hkey_current_user\software\microsoft\internet explorer\menuext\&make 0rz]
@=file://c:\\program files\\make0rz.js
contexts=dword:00000023
7. 以下是 make0rz.js 的內容:
复制代码 代码如下:
由於,在 contexts 的 value 设定為 0x23,所以表示【预设载入】、【在连结上】、【在图片上】按下右键,就会出现【make 0rz】的功能。
【预设载入】:在页面空白处,按下右键执行 contextmenu 的【make 0rz】,表示目前页面连结进行缩短网址。
【在连结上】:在文字连结上,按下右键执行 contextmenu 的【make 0rz】,表示该文字连结进行缩短网址。
【预设载入】:在图片连结或是图片上,按下右键执行 contextmenu 的【make 0rz】,表示图片位置进行缩短网址。
在 javascript 当中,利用 external.menuarguments.event,来判断使用者在何种时机按下右键并取得该元素
利用 external.menuarguments.event.srcelement.href 取得该元素的连结
利用 external.menuarguments.location.href 取得目前页面的连结
然后利用 window.open 来开啟 0rz.tw 目标页面,来显是缩短网址后的结果。
如果是执行程式码的 30 – 33 的话,表示有预览画面 (preview);执行 35-38 则无预览画面。(可以依照需求自由调整)
8. 实际成果贴图:
(1) 在空白处,按下右键执行 contextmenu 的【make 0rz】,表示目前页面连结进行缩短网址。 (以 no preview 功能呈现)
http://tw.msn.com/?ocid=iehp => http://0rz.tw/kr9hf
(2) 在文字连结(新 闻)上,按下右键执行 contextmenu 的【make 0rz】,表示该文字连结进行缩短网址。(以 preview 功能呈现)
http://news.msn.com.tw/ => http://0rz.tw/7d2h6
(3) 在图片连结或是图片上,按下右键执行 contextmenu 的【make 0rz】,表示图片位置进行缩短网址。
http://sin.stb01.s-msn.com/i/53/79d3a7e9a23e21c6a510f09720cd2.jpg => http://0rz.tw/jltdn
本功能范例可点此下载,压缩档案包含:regmake0rz.reg 註册机码安装档、make0rz.js 功能执行档、delmake0rz.reg 註册机码反安装档
安装:执行 regmake0rz.reg,自行将 make0rz.js 放置於 c:\program files 目录下
反安装:执行 delmake0rz.reg,自行将 c:\program files\make0rz.js 档案删除