首頁 > web前端 > js教程 > 主體

開發 Internet Explorer 右鍵選單(ContextMenu)_javascript技巧

WBOY
發布: 2016-05-16 17:30:29
原創
1463 人瀏覽過

參考MSDN Library【Adding Entries to the Standard Context Menu】開發ContextMenu

1. IE 額外的ContextMenu 是透過註冊機碼HKEY_CURRENT_USERSoftware.MicrosoftInternet ExplorerMenuExt 來建立一個
2
2

SNAG-0003

SNAG-0001


3. 如果我們想要在該功能上可以使用快捷鍵,就如同開發 Windows Form 一樣,只要在英文名稱前加上 & 符號即可。

例如:我們把Key 值從【Make 0rz】改為【&Make 0rz】,則當ContextMenu 出現按M 就是執行該項功能

4. 在該Key 值底下,有一個重要鍵值是Contexts,主要的功能是定義ContextMenu 出現的時機

SNAG-0004


包含: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 FilesMake0rz.js】

SNAG-0007

6. 這樣大致上,就算是完成註冊機碼的部份。我們透過製作 .reg 檔案方便讓使用者來進行安裝,以下是本範例 RegMake0rz.reg 檔案:

程式碼如下:

 Windows

 [HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt&Make 0rz]
@="file://C:\Program Files\Make0rz.js" 
"Contexts"=dword:00000rz.js" 
"Contexts"=dword:00000023

 7. 以下是 Make0rz.js 的內容:

複製程式碼 程式碼如下:

     
  var obj = external.menuArguments.event.srcElement;
  var str = obj.tagName
;
  var str = obj.tagName
;
. 'A' || str.toUpperCase() == 'IMG ') {
    if (str.toUpperCase() == 'A') {
      if (external.menuArguments.event.shift) {        str = obj.firstChild.nodeValue;
      }
           }
    }
    else {
      字符串列= external.menuArguments.event.srcElement.href;
}
  }
  else {
    if (str ;
      if (trim(str) == '') {
        str = external.menuArguments.location.href;  //var width = 600;
  //var height = 600;

  // 無廣告
  var url = 'http://0rz.tw/createget? redirect =0&url='encodeURIComponent(str);
  var width = 160;
  var height = 90;

  var left = (screen.width - 寬度)
  var left = (screen.width - 寬度)
  var left = (screen.width - 寬度) / = (screen.height - 高度) / 2;
  var cmd = 'width='寬度', height='高度', top='頂部', left='左;
  cmd = ',directories= no , location=no, menubar=no, ressized=no, 捲軸=否,狀態=否,工具列=否';

  newwin = window.open(url, 'windowname5', cmd);
  if (window.focus) {
    newwin.focus( )
  }

  function trim(strValue) {
 🎜 >    var regR = /[?@s] $/;
strValue = strValue.replace(regL, "");
    strValue = strValue.replace(regR, "");

  }  
  腳本>

由於,在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 功能呈現)

SNAG-0009

http://tw.msn.com/?ocid=iehp => http://0rz.tw/KR9Hf

SNAG-0010

(2) 在文字連結(新 聞)上,按下右鍵執行 ContextMenu 的【Make 0rz】,表示該文字連結進行縮短網址。 (以 Preview 功能呈現)

SNAG-0008

http://news.msn.com.tw/ => http://0rz.tw/7d2H6

SNAG-0011

(3) 在圖片連結或是圖片上,按下右鍵執行 ContextMenu 的【Make 0rz】,表示圖片位置進行縮短網址。

SNAG-0012

http://sin.stb01.s-msn.com/i/53/79D3A7E9A23E21C6A510F09720CD2.jpg => http://0rz.tw/JlTDN
http://0rz.tw/JlTDN
點此下載,壓縮檔案包含:RegMake0rz.reg 註冊機碼安裝檔、Make0rz.js 功能執行檔、DelMake0rz.reg 註冊機碼反安裝檔

安裝:執行RegMake0rz .reg,自行將Make0rz.js 放置於C:Program Files 目錄下

反安裝:執行DelMake0rz.reg,自行將C:Program FilesMake0rz.js 檔案刪除
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板