開發(fā) Internet Explorer 右鍵功能表(ContextMenu)
1. IE 額外的 ContextMenu 是透過註冊(cè)機(jī)碼 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt 來建立
2. 所以只要在該位置下新增一個(gè) Key 值,例如:新增【Make 0rz】則 IE 中按下右鍵就會(huì)出現(xiàn)相同名稱的功能
例如:我們把 Key 值從【Make 0rz】改為【&Make 0rz】,則當(dāng) ContextMenu 出現(xiàn)按下 M 就是執(zhí)行該項(xiàng)功能
4. 在該 Key 值底下,有一個(gè)重要鍵值是 Contexts,主要的功能是定義 ContextMenu 出現(xiàn)的時(shí)機(jī)
如果 ContextMenu 要包含兩種以上的出現(xiàn)時(shí)機(jī),則將 value 自行做 logic or 計(jì)算再帶入即可
例如:在本范例中,我們可以新增一個(gè) DWORD 型態(tài),名稱 Contexts、值為 23 的鍵值。則表示該 ContextMenu 【預(yù)設(shè)載入】、【在連結(jié)上】、【在圖片上】按下右鍵,就會(huì)出現(xiàn)【Make 0rz】的功能。
5. 另外還有 (Default) 這個(gè)鍵值,該鍵值填入的內(nèi)容就是使用者執(zhí)行 ContextMenu 功能時(shí)交給誰來處理,可能是 .html、.exe、.dll…. 等等。
例如本范例中,我想要呼叫 javascript 來執(zhí)行功能,所以就填入【file://C:\Program Files\Make0rz.js】
6. 這樣大致上,就算是完成註冊(cè)機(jī)碼的部份。我們透過製作 .reg 檔案方便讓使用者來進(jìn)行安裝,以下是本範(fàn)例 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 的內(nèi)容:
<script language="JavaScript" >
var obj = external.menuArguments.event.srcElement;
var str = obj.tagName;
if (str.toUpperCase() == 'A' || str.toUpperCase() == 'IMG') {
if (str.toUpperCase() == 'A') {
if (external.menuArguments.event.shiftKey) {
str = obj.firstChild.nodeValue;
}
else {
str = external.menuArguments.event.srcElement.href;
}
}
else {
str = external.menuArguments.event.srcElement.href;
}
}
else {
if (str.toUpperCase() != 'BODY') {
str = obj.innerText;
if (trim(str) == '') {
str = external.menuArguments.location.href;
}
}
else {
str = external.menuArguments.location.href;
}
}
//// Preview
//var url = 'http://0rz.tw/createget?redirect=1&url=' + encodeURIComponent(str);
//var width = 600;
//var height = 600;
// NO Preview
var url = 'http://0rz.tw/createget?redirect=0&url=' + encodeURIComponent(str);
var width = 160;
var height = 90;
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
var cmd = 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left;
cmd += ', directories=no, location=no, menubar=no, resizable=no, scrollbars=no, status=no, toolbar=no';
newwin = window.open(url, 'windowname5', cmd);
if (window.focus) {
newwin.focus()
}
function trim(strValue) {
var regL = /^[?@\s]+/;
var regR = /[?@\s]+$/;
strValue = strValue.replace(regL, "");
strValue = strValue.replace(regR, "");
return strValue;
}
</script>
【預(yù)設(shè)載入】:在頁面空白處,按下右鍵執(zhí)行 ContextMenu 的【Make 0rz】,表示目前頁面連結(jié)進(jìn)行縮短網(wǎng)址。
【在連結(jié)上】:在文字連結(jié)上,按下右鍵執(zhí)行 ContextMenu 的【Make 0rz】,表示該文字連結(jié)進(jìn)行縮短網(wǎng)址。
【預(yù)設(shè)載入】:在圖片連結(jié)或是圖片上,按下右鍵執(zhí)行 ContextMenu 的【Make 0rz】,表示圖片位置進(jìn)行縮短網(wǎng)址。
在 javascript 當(dāng)中,利用 external.menuArguments.event,來判斷使用者在何種時(shí)機(jī)按下右鍵并取得該元素
利用 external.menuArguments.event.srcElement.href 取得該元素的連結(jié)
利用 external.menuArguments.location.href 取得目前頁面的連結(jié)
然后利用 window.open 來開啟 0rz.tw 目標(biāo)頁面,來顯是縮短網(wǎng)址后的結(jié)果。
如果是執(zhí)行程式碼的 30 – 33 的話,表示有預(yù)覽畫面 (Preview);執(zhí)行 35-38 則無預(yù)覽畫面。(可以依照需求自由調(diào)整)
8. 實(shí)際成果貼圖:
(1) 在空白處,按下右鍵執(zhí)行 ContextMenu 的【Make 0rz】,表示目前頁面連結(jié)進(jìn)行縮短網(wǎng)址。 (以 No Preview 功能呈現(xiàn))
本功能范例可點(diǎn)此下載,壓縮檔案包含:RegMake0rz.reg 註冊(cè)機(jī)碼安裝檔、Make0rz.js 功能執(zhí)行檔、DelMake0rz.reg 註冊(cè)機(jī)碼反安裝檔
安裝:執(zhí)行 RegMake0rz.reg,自行將 Make0rz.js 放置於 C:\Program Files 目錄下
反安裝:執(zhí)行 DelMake0rz.reg,自行將 C:\Program Files\Make0rz.js 檔案刪除
- 用MyEclipse配置DataBase Explorer(圖示)
- 淺談Android Studio 3.0 工具新特性的使用 Android Profiler 、Device File Explorer
- linux下部署kodexplorer的方法
- IE事件對(duì)象(The Internet Explorer Event Object)
- 在IE6下發(fā)生Internet Explorer cannot open the Internet site錯(cuò)誤
- VBS InternetExplorer.Application的屬性和方法介紹
- EXPLORER.EXE病毒手動(dòng)解決方法
- Eclipse中如何顯示explorer過程解析
相關(guān)文章
js禁止Backspace鍵使瀏覽器后退的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨s禁止Backspace鍵使瀏覽器后退的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09微信小程序開發(fā)搜索功能實(shí)現(xiàn)(前端+后端+數(shù)據(jù)庫)
這篇文章主要介紹了微信小程序開發(fā)搜索功能實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03JS的replace方法與正則表達(dá)式結(jié)合應(yīng)用講解
replace方法的語法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正則表達(dá)式對(duì)象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。。為了幫助大家更好的理解,下面舉個(gè)簡(jiǎn)單例子說明一下2007-12-12Uniapp全局消息提示以及其組件的實(shí)現(xiàn)方法
當(dāng)時(shí)在做登錄那邊需要做一些交互,所以必不可少要用到消息提示框,下面這篇文章主要給大家介紹了關(guān)于Uniapp全局消息提示以及其組件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06html的DOM中Event對(duì)象onblur事件用法實(shí)例
這篇文章主要介紹了html的DOM中Event對(duì)象onblur事件用法,實(shí)例分析了onblur事件的使用范圍與對(duì)應(yīng)的javascript使用技巧,需要的朋友可以參考下2015-01-01使用Math.max,Math.min獲取數(shù)組中的最值實(shí)例
下面小編就為大家?guī)硪黄褂肕ath.max,Math.min獲取數(shù)組中的最值實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04