在浏览器右键添加自定义菜单

在浏览器右键添加自定义菜单

Afly | 2006-11-8

其实就是类似当安装完 Flashget 后 Internet Explorer 的右键多了“使用网际快车下载”的选项一样,现在我们的需求是:当我们在图片右键时出现“复制图像地址”的选项。

其实很简单,先把下列代码存为 abc.reg 并导入:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\复制图像地址(&Z)]
@="C:\\CopyImageUrl.htm"
"contexts"=dword:00000002

并把下列代码存为 C:\CopyImageUrl.htm:

<script language="javascript" defer>
var Elem=external.menuArguments.event.srcElement;
var imgUrl=‘‘;
if(Elem.tagName==‘IMG‘) imgUrl=Elem.src;
else if(Elem.tagName==‘A‘){
    var cElem=Elem.children;
    if(cElem.length){
        for(i=0; i<=cElem.length-1; i++){
            if(cElem[i].tagName==‘IMG‘) imgUrl=cElem[i].src;
            break;
        }
    }
}
if(imgUrl) clipboardData.setData(‘text‘,imgUrl)
</script>

重启你的浏览器就可以用了。

要注意几点:

  1. 这个功能适用于 IE 和所有以 IE 为内核的第三方浏览器,比如 Mathxon。
  2. “复制图像地址(&Z)”后面的符号 Z 为快捷键,根据不冲突又易按的原则,你至少还可以改为:q、w、x。
  3. contexts 对应应用对象有:Default、Images、Controls、Tables、Text selection、Anchor、Unknown。
  4. 与 contexts 并列的,还有一个可选的双字节 Flags,值为 0x1 时,脚本将以窗口对话框方式执行。
  5. 如果脚本存在于某 dll 文件的 123 位置,还可以用“Example.dll, 123”这样的指向来定义。

快捷键

根据个人经验,熟练地使用这个功能,至少可以让操作快上 80% 的时间,甚至 Flashget 默认也没设置这个人性化的功能,遗憾。不过我们完全可以修改之,嘿嘿!

可选项

Value Constant_Name Description
0x01 CONTEXT_MENU_DEFAULT Shown on all context menus.
0x02 CONTEXT_MENU_IMAGE Context menu of images only.
0x04 CONTEXT_MENU_CONTROL Context menu of form controls only.
0x08 CONTEXT_MENU_TABLE Context menu of tables only.
0x10 CONTEXT_MENU_TEXTSELECT Context menu of selected text only, including images in a selected region.
0x20 CONTEXT_MENU_ANCHOR Context menu of links only. Does not include linked images or image maps.
0x40 CONTEXT_MENU_UNKNOWN Right-click on none of the above.

多种值综合应用是“或”的关系,比如需要在默认和连接时右键时显示,则 contexts=0x21;想单独在图片上显示,则 contexts=0x02 了。

举例

下面例子可以将页面在新窗口显示:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\Show in New Window]
@="file://c:\\example2.htm"
"Contexts"=dword:00000001

c:\example2.htm

<SCRIPT LANGUAGE="JavaScript" defer>
    window.open(external.menuArguments.location.href);
</SCRIPT>

下面例子可以将选中文字变为大写:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\My &Menu Item]
@="file://c:\myscript.htm"
"Contexts"=dword:00000001

c:\myscript.htm

<SCRIPT LANGUAGE="JavaScript" defer>
   var parentwin = external.menuArguments;
   var doc = parentwin.document;
   var sel = doc.selection;
   var rng = sel.createRange();
   var str = new String(rng.text);
   if(str.length != 0) rng.text =  str.toUpperCase();
</SCRIPT>

效果

删除

将下列代码存为 unreg.reg 并导入就可以了:

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\复制图像地址(&Z)]

参考

About the Browser
http://windowssdk.msdn.microsoft.com/en-gb/library/ms629731.aspx
Adding Entries to the Standard Context Menu
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/ext/tutorials/context.asp
如何在右键菜单添加“拷贝图像地址”
http://forum.maxthon.com/index.php?showtopic=13228&st=0&p=87259

目前自己用的:

Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt]
 
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\复制图像地址(&Z)]
@="D:\\Afly\\CopyImg.html"
"contexts"=dword:00000002
 
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\打开图像(&W)]
@="D:\\Afly\\OpenImg.html"
"contexts"=dword:00000002
 
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\播放该音乐(&M)]
@="D:\\Afly\\OpenMusic.html"
"Contexts"=dword:00000022
 
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\查询单词(&D)]
@="D:\\Afly\\OpenDict.html"
"contexts"=dword:00000030

<script language="javascript" defer>
   var rng = external.menuArguments.document.selection.createRange();
   var str = new String(rng.text);
   if(str.length == 0) str=external.menuArguments.event.srcElement.innerText;
   window.open("http://sh.dict.cn/search/?q="+str,"_search");  
</script>

<script language="javascript" defer>
var Elem=external.menuArguments.event.srcElement;
var imgUrl=‘‘;
var rng = external.menuArguments.document.selection.createRange();
var str = new String(rng.text);
if(Elem.tagName==‘IMG‘) imgUrl=Elem.src;
else if(Elem.tagName==‘A‘){
    var cElem=Elem.children;
    if(cElem.length){
        for(i=0; i<=cElem.length-1; i++){
            if(cElem[i].tagName==‘IMG‘) imgUrl=cElem[i].src;
            break;
        }
    }
}
else if(str.length != 0){
 imgUrl =  str;
}
if(imgUrl) eval(‘wi‘+‘ndow.op‘+‘en(imgUrl,"_blank")‘);
</script>

<script language="javascript" defer>
var Elem=external.menuArguments.event.srcElement;
var MusicUrl="";
if(Elem.tagName==‘IMG‘){
 MusicUrl=Elem.parentElement.href;
}
if(Elem.tagName==‘A‘){
 MusicUrl=Elem.href;
}
window.open("file://D:/Afly/Player.html?"+MusicUrl,‘_blank‘,‘status=no,resizable=yes,width=350,height=250,left=250,top=130‘);
//encodeURIComponent(MusicUrl)
</script>

<html>
<head>
<script language="javascript">
var url = document.location.search.substr(1);
window.onload=function() {
    if(url)WMP.URL=url;WMP.play();
}
</script>
</head>
<body style="margin:0;padding:0">
<div id="MusicBox" class="SideContent">
<object classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" id="WMP" width="100%" height="100%">
  <param name="URL" value="" />
  <param name="autoStart" value="1" />
  <param name="playCount" value="3" />
  <param name="rate" value="1" />
  <param name="enabled" value="1" />
  <param name="invokeURLs" value="-1" />
  <param name="volume" value="50" />
  <param name="mute" value="0" />
  <param name="uiMode" value="full" />
  <param name="stretchToFit" value="0" />
  <param name="windowlessVideo" value="1" />
  <param name="enableContextMenu" value="1" />
  <param name="fullScreen" value="0" />
  <param name="enableErrorDialogs" value="0" />
</object>
</div>
</body>
</html>

Permalink | Comments (5) | Hits: 17603 | Time: 0:38:34

The Clipboard under IE/FF
自定义“搜索助手”
All Comments

#1 - James - 2006-12-2 16:51:12

佩服!
我这边想实现这样一个功能:在浏览器中的输入框内点右键时,出现“插入...”的标签,并可以将预定的内容粘贴到该位置。
这些内容是一个URL地址,或者是一段引用的网络上有格式的文字图片等,因为常用,所以不想每次都先去copy。
URL应该是固定的,但引用的内容可能有变化。
希望大侠能帮帮忙啦!

#2 - 洋洋 - 2006-12-19 13:26:29

现在就来试一下,hug

#3 - 5368 - 2010-2-6 0:32:08

感谢afly的代码!
不知在firefox中怎么自定义右键?

#4 - Afly - 2010-2-6 14:30:11

以上这些DIY的功能基本上FF也都有了。。。很多插件都有选项是否显示在右键;也有专门的菜单/右键的设置插件,但没专门研究过,估计也需要写配置代码之类的……

#5 - mingjiang - 2010-3-18 22:08:22

看看这边06年就有了 和这个道理是是一样的 
http://uncms.host.ctrit.net/blog/html/12/

时间: 2024-12-29 06:41:20

在浏览器右键添加自定义菜单的相关文章

JS 禁止浏览器右键菜单和刷新

1 <script language="javascript"> 2 //禁止按键F5 3 document.onkeydown = function(e){ 4 e = window.event || e; 5 var keycode = e.keyCode || e.which; 6 if( keycode = 116){ 7 if(window.event){// ie 8 try{e.keyCode = 0;}catch(e){} 9 e.returnValue =

js屏蔽浏览器右键菜单,粘贴,复制,剪切,选中(转)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

顶 兼容各种浏览器js折叠菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

桌面点击右键,菜单向左弹出,如何改为向右弹出菜单

操作步骤: 按win+r在弹出的运行窗口中输入 shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}运行弹出“平板电脑设置”窗口,选择“其他”选项卡,在“左右手使用习惯”下,选“惯用左手”,确定 . 桌面点击右键,菜单向左弹出,如何改为向右弹出菜单

设置Firefox(火狐)浏览器的中文菜单/界面

步骤一: 设置Firefox浏览器的中文菜单/界面.首先需要查一下正在使用的火狐版本号(小生使用的火狐版本是55.0.3).      步骤二: 下载对应版本的xpi中文插件 其次,访问下面的火狐官方地址:http://releases.mozilla.org/pub/firefox/releases/ 然后,找到对应的版本型号文件目录及操作系统:(小生的火狐版本是:55.0.3,所以在" http://releases.mozilla.org/pub/firefox/releases/55.0

win8.1右键新建菜单添加新建php文件

最近在学习php没使用IDE,一直使用编辑器,但每次新建文件都要手动该扩展名比较麻烦.于是想着能不能在右键新建菜单直接新建php文件.于是开始百度... 步骤一:win+R打开运行(管理员身份运行) 步骤二:找到.php扩展名注册的项在HKEY_CLASSES_ROOT项下ctrl+F查找.php的项,这个时候这个项下一般是没有东西的. 1.右键添加新建项ShellNew 2.在刚添加的ShellNew上右键添加字符串值NullFile,默认为空就好. 3.如果你按照百度搜的也是我这么来的 那你

完美者右键扩展菜单管理器 1.2.1 中文绿色版

软件名称: 完美者右键扩展菜单管理器 1.2.1 中文绿色版软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 590KB图片预览: 软件简介:一款强大的Windows右键扩展菜单管理器,可以对右键菜单进行增加,修改,删除等操作. 主要特点:1.支持Windows XP.Windows 7系统(某些功能在win7下有限制)2.自定义增加文件类型3.自定义菜单4.增加.编辑.删除和导出菜单5.删除菜单时自动备份6.自定义清理

鼠标右键自定义菜单

效果图 代码如下: <!doctype html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta charset="utf-8"> <title>鼠标右键自定义菜单</title> <meta nam

Windows系统下增删右键新建菜单

绝大多数的Windows系统下右键新建菜单都有长长的一串子项,例如WinRAR和Office全家.PS等菜单.如果配置比较低或者正在运行高资源占用的程序时,右键划过新建项时系统会卡卡的严重的时候会卡死掉. 而有些时候我们又需要频繁的建立某类型的文件,如果可以从右键直接创建就会方便很多.特别是Windows现在重命名的方式把文件名和后缀分开编辑,要多点几下才能修改到后缀名. 删除多余的右键菜单 我们需要删除的是多余的右键菜单,而不是全部,那么首先要知道需要删除的文件格式是什么 在桌面右键新建出需要