熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

開發 Internet Explorer 右鍵功能表(ContextMenu)

2013-11-15 11:59:59  來源: JSP教程 

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

IE 額外的 ContextMenu 是透過註冊機碼 HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt 來建立
所以只要在該位置下新增一個 Key 值例如新增【Make rz】則 IE 中按下右鍵就會出現相同名稱的功能
 

  SNAG-0003

  SNAG-0001

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

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

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

  SNAG-0004

  包含Default(預設載入)Images(在圖片上)Control(任一控制項上)Tables(在表格格上)Text selection(純文字反白選擇時)Anchor(在連結上)

如果 ContextMenu 要包含兩種以上的出現時機則將 value 自行做 logic or 計算再帶入即可

例如在本范例中我們可以新增一個 DWORD 型態名稱 Contexts值為 的鍵值則表示該 ContextMenu 【預設載入】【在連結上】【在圖片上】按下右鍵就會出現【Make rz】的功能

另外還有 (Default) 這個鍵值該鍵值填入的內容就是使用者執行 ContextMenu 功能時交給誰來處理可能是 htmlexedll… 等等

例如本范例中我想要呼叫 javascript 來執行功能所以就填入【file://C:Program FilesMakerzjs】

  SNAG-0007

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

復制代碼 代碼如下:
 Windows Registry Editor Version  

  [HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt&Make rz]
@="file://C:Program FilesMakerzjs" 
"Contexts"=dword:

   以下是 Makerzjs 的內容

復制代碼 代碼如下:
  <script language="JavaScript" >   
  var obj = externalmenuArgumentseventsrcElement;
  var str = objtagName;
  if (strtoUpperCase() == A || strtoUpperCase() == IMG) {
    if (strtoUpperCase() == A) {
      if (externalmenuArgumentseventshiftKey) {
        str = objfirstChildnodeValue;
      }
      else {
        str = externalmenuArgumentseventsrcElementhref;
      }
    }
    else {
      str = externalmenuArgumentseventsrcElementhref;
    }
  }
  else {
    if (strtoUpperCase() != BODY) {
      str = objinnerText;
      if (trim(str) == ) {
        str = externalmenuArgumentslocationhref;
      }
    }
    else {
      str = externalmenuArgumentslocationhref;
    }
  }

  //// Preview
  //var url = + encodeURIComponent(str);
  //var width = ;
  //var height = ;

  // NO Preview
  var url = + encodeURIComponent(str);
  var width = ;
  var height = ;

  var left = (screenwidth width) / ;
  var top = (screenheight height) / ;
  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 = windowopen(url windowname cmd);
  if (windowfocus) {
    newwinfocus()
  }

  function trim(strValue) {
    var regL = /^[?@s]+/;
    var regR = /[?@s]+$/;
    strValue = strValuereplace(regL "");
    strValue = strValuereplace(regR "");
    return strValue;
  }  
  </script>

  由於在 Contexts 的 value 設定為 x所以表示【預設載入】【在連結上】【在圖片上】按下右鍵就會出現【Make rz】的功能
【預設載入】在頁面空白處按下右鍵執行 ContextMenu 的【Make rz】表示目前頁面連結進行縮短網址
【在連結上】在文字連結上按下右鍵執行 ContextMenu 的【Make rz】表示該文字連結進行縮短網址
【預設載入】在圖片連結或是圖片上按下右鍵執行 ContextMenu 的【Make rz】表示圖片位置進行縮短網址

在 javascript 當中利用 externalmenuArgumentsevent來判斷使用者在何種時機按下右鍵並取得該元素
利用 externalmenuArgumentseventsrcElementhref 取得該元素的連結
利用 externalmenuArgumentslocationhref 取得目前頁面的連結

然後利用 windowopen 來開啟 rztw 目標頁面來顯是縮短網址後的結果
如果是執行程式碼的 的話表示有預覽畫面 (Preview)執行 則無預覽畫面(可以依照需求自由調整)

實際成果貼圖
() 在空白處按下右鍵執行 ContextMenu 的【Make rz】表示目前頁面連結進行縮短網址 (以 No Preview 功能呈現)

  SNAG-0009

  ://rztw/KRHf

  SNAG-0010

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

  SNAG-0008

  ://rztw/dH

  SNAG-0011

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

  SNAG-0012

  ://rztw/JlTDN

本功能范例可點此下載壓縮檔案包含RegMakerzreg 註冊機碼安裝檔Makerzjs 功能執行檔DelMakerzreg 註冊機碼反安裝檔

安裝執行 RegMakerzreg自行將 Makerzjs 放置於 C:Program Files 目錄下

反安裝執行 DelMakerzreg自行將 C:Program FilesMakerzjs 檔案刪除


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20060.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.