Windows XP Tablet Ed.嵌入式Windows VistaWindows 2003Windows 2000Windows XPHTML中级开发Visual StudioJavascriptWindows
Gmail 图片查看器






3.80/5 (11投票s)
2004年11月23日
2分钟阅读

94972

848
如何在 IE 中添加一个上下文菜单,以便在 Gmail 中执行一些很棒的操作。
引言
这个小脚本的目的是让在 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 的一个错误 - 在其他平台上运行良好),所以移除了图像的 onclick
和 oncontextmenu
事件。
历史
- 2004年12月14日:发布了此脚本的新版本(版本 1.0)。此版本隐藏了缩略图并在内联显示完整图像。缩略图很好,但有时完整图像更好 :-)。
- 2004年11月25日:谷歌的人最终将此功能作为 Gmail 的内置选项添加。这使得我的脚本变得多余,但我将把它留在这里,作为未来开发人员的参考。
延伸阅读
- 将条目添加到标准上下文菜单 (MSDN)
- external DOM 对象 (MSDN)