LUCKSUNBOY 2017-10-23 02:02 采纳率: 85.7%
浏览 1072
已结题

如何给IE的鼠标右键增加多级菜单项目?

如何给IE的鼠标右键增加多级菜单项目?我知道要修改注册表,在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt下面增加一个项就行,但是我现在想要一个多极菜单,也就是后面有三角符号点击后还有子菜单的那种,这个我就不会了,希望大神帮一下,谢谢谢谢

  • 写回答

1条回答 默认 最新

  • qq_40748991 2017-10-23 02:54
    关注

    其实很简单,先把下列代码存为 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:

    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)

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

    要注意几点:

    这个功能适用于 IE 和所有以 IE 为内核的第三方浏览器,比如 Mathxon。
    “复制图像地址(&Z)”后面的符号 Z 为快捷键,根据不冲突又易按的原则,你至少还可以改为:q、w、x。
    contexts 对应应用对象有:Default、Images、Controls、Tables、Text selection、Anchor、Unknown。
    与 contexts 并列的,还有一个可选的双字节 Flags,值为 0x1 时,脚本将以窗口对话框方式执行。
    如果脚本存在于某 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

    window.open(external.menuArguments.location.href);

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

    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

    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();

    效果

    删除

    将下列代码存为 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

    原文地址:http://www.playes.net/Blog/436.asp


    以上内容来自网络,实现了在浏览器添加右键菜单,点击菜单后响应htm文件打开页面等操作,而我希望实现通过右键菜单打开本地应用程序,方法为把htm后缀改为hta。

    C:\Myscript.hta:

    [javascript] view plain copy

    function RunNotepad() { var shell = new ActiveXObject("WSCRIPT.Shell"); shell.Run("notepad.exe C:\1.txt"); } window.resizeTo(0,0) window.onload=RunNotepad;

    这样点击浏览器右键菜单就可以打开本地记事本文件1.txt了。
    这是一种通过添加注册表加执行JavaScript脚本实现浏览器右键菜单功能,其功能有限。如果要实现更复杂的就需要编写浏览器插件了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 1月28日
  • 已结题 (查看结题原因) 1月28日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。