65.9K
CodeProject 正在变化。 阅读更多。
Home

Gmail 图片查看器

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.80/5 (11投票s)

2004年11月23日

2分钟阅读

viewsIcon

94972

downloadIcon

848

如何在 IE 中添加一个上下文菜单,以便在 Gmail 中执行一些很棒的操作。

Before and after

引言

这个小脚本的目的是让在 Gmail 中查看带有图像的电子邮件更快。使用安装程序安装后,此程序将在您的 Internet Explorer 的上下文菜单中添加一个“Gmail 图像查看器”项。当查看包含图像附件的 Gmail 邮件时,选择此菜单项,脚本将运行并内联邮件中的所有图像,因此您无需单击每张图像即可查看它。

背景

代码的核心在于它能够在 IE 的上下文菜单中添加一个项目。这是通过在 HKCU\Software\Microsoft\Internet Explorer\MenuExt\ 下添加一个新的注册表项来实现的。注册表项的名称将是新的上下文菜单项的名称,默认值指向一个 HTML 文件,当用户单击菜单项时,该文件将被解析。

理解代码

由于代码非常小,我将在这里完整地展示它(它的一个版本)

<script>
var w=window.external.menuArguments;
var l=w.document.links
var len=l.length
var re_v=/http...gmail.google.com.gmail.view=att.disp=inline/i
var re_d=/http...gmail.google.com.gmail.view=att.disp=attd/i
var no_context=
   'onclick="event.returnValue=false" oncontextmenu="event.returnValue=false"'
var c=0

//hide thumbnails
var re_i=/http...gmail.google.com.gmail.view=att.disp=thd/
var img=w.document.getElementsByTagName("IMG")
var len2=img.length
for (var i=0;i<len2;i++) {
    if (img[i].src.search(re_i)>-1) img[i].style.display='none'
}

for (var i=0;i<len;i++) {
    //search for "View" followed by "Download" 
    //link (let gmail do the dirty work for us)
    if ( l[i].href.search(re_v)>-1 && i+1<len && l[i+1].href.search(re_d)>-1 ) {
        l[++i].outerHTML=l[i].outerHTML+
            '<br><img src="'+l[i].href+'" '+ no_context +'><br>'
        c++
    }
}
w.status="Gmail Image Viewer ©2004 by Nir Levy (Found " + 
    "((!c)?"no":c) + " image" + ((c!=1)?"s":"") +")"
</script>

通过访问 external 对象的 menuArguments 元素来访问调用页面。然后,程序获取文档中所有链接的列表,并定义两个正则表达式,这两个正则表达式对应于带有附件的 Gmail 邮件中的“查看”和“下载”链接(希望它们不会很快更改其链接方案 :-)。

然后,该过程继续循环遍历文档中的所有链接,并搜索“查看”链接,后跟“下载”链接。如果找到一对,则将下载链接的 outerHTML 与下载的 <IMG SRC> 链接附加起来。(单独的循环在替换链接之前隐藏所有缩略图)。

因为它们导致我的计算机崩溃(我猜这是因为 IE5.5/NT 的一个错误 - 在其他平台上运行良好),所以移除了图像的 onclickoncontextmenu 事件。

历史

  • 2004年12月14日:发布了此脚本的新版本(版本 1.0)。此版本隐藏了缩略图并在内联显示完整图像。缩略图很好,但有时完整图像更好 :-)。
  • 2004年11月25日:谷歌的人最终将此功能作为 Gmail 的内置选项添加。这使得我的脚本变得多余,但我将把它留在这里,作为未来开发人员的参考。

延伸阅读

© . All rights reserved.