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

    技术2022-05-20  35

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

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

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt复制图像地址(&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>

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

    要注意几点:

    这个功能适用于 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 Description0x01 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_USERSoftwareMicrosoftInternet ExplorerMenuExtShow 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_USERSoftwareMicrosoftInternet ExplorerMenuExtMy &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>

     ---★ 本文转摘自『IT学习者』→ http://www.itlearner.com/article/4447


    最新回复(0)