小谈html mailto sheme

简介:

引入:

上sprint我们项目组用到了mailto sheme,在href中,我也有兴趣稍花了点时间研究了下。


实践

如果页面中的链接用到了mailto sheme如下:

114649652.png


则当在页面中点击如下超级链接时:

114736564.png


它自动会打开OutLook 并且吧所有的我们href中内容都自动填入进去:

114840606.png


现在我们来研究这个mailto theme的机理:


很显然,根据我的学习习惯,会先去找RFC 中的说明,我们在如下页面找到了:

http://tools.ietf.org/html/rfc6068


快速阅读了一下,发现这段话讲解了http shememailtosheme在页面上被点击后发生的事情:

114938294.png


可以看出:对于解析的url包含http sheme,则会引起客户端软件(浏览器)和交互服务器的立即交互,也就是说,当一个hrefhttp://xxxx,时候,会立马找到浏览器并且发送请求url,于是这就是超级链接的本质。而对于mailto scheme,则会让客户端软件创建一个消息,吧mailto后面的url和参数依次填入,但是不会立马发送,而是等用户编辑完再发送。



而根据我的已有知识,当页面上点击http sheme时候,它启动的浏览器是你当前页面所在的浏览器,否则是从注册表中找到默认的浏览器。

按照类比的思路,我们可以断定,这个mailto sheme所触发的邮件客户端应该也是从注册表中找的


而RFC的制定,所有的主流浏览器都必须遵守这些RFC 规范,所以所有浏览器中实验,其结果都是一样的。


我们看下注册表在HKEY_CLASSES_ROOT下:

115022445.png


这个command的默认值是:

115112192.png


所以,这里可以看出,我们的mailto标签会默认激活OUTLOOK.EXE,因为我们注册表中默认的是打开OUTLOOK.EXE


所以我们只要在自己的客户端机器上安装了其他电子邮件应用,比如outlook express或者Foxmail,并且在这里吧这个键值指向相应的可执行文件,就可以让mailto标签触发打开相应的邮件编辑器了我昨晚在家实验了下,完全正确



总结;

(1)mailto sheme是可以触发用户打开电子邮件客户端的sheme.

(2)具体打开哪个客户端,由注册表中的设定为准,你可以配置这个设定来让mailto触发打开不同的邮件客户端,如果你设置了一个错误的客户端执行文件路径或者乱填,那么这个mailto 被点击后什么都不触发。





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1309597,如需转载请自行联系原作者
目录
相关文章
|
8天前
|
前端开发 JavaScript 开发工具
【HTML/CSS】入门导学篇
【HTML/CSS】入门导学篇
17 0
|
3天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
13 1
|
3天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
11天前
|
XML 前端开发 JavaScript
css和html
【4月更文挑战第7天】css和html
11 0
|
1月前
使用html+css制作一个发光立方体特效
使用html+css制作一个发光立方体特效
20 2
使用html+css制作一个发光立方体特效
|
1月前
超简单的html+css魔幻霓虹灯文字特效
超简单的html+css魔幻霓虹灯文字特效
13 3
超简单的html+css魔幻霓虹灯文字特效
|
1月前
|
前端开发 JavaScript
从0到1:用HTML、CSS和JavaScript构建一个简单的待办事项列表
从0到1:用HTML、CSS和JavaScript构建一个简单的待办事项列表
24 0
|
1月前
|
JavaScript 前端开发
编程笔记 html5&css&js 079 JavaScript 循环语句
编程笔记 html5&css&js 079 JavaScript 循环语句
|
1月前
|
JavaScript 前端开发 开发者
编程笔记 html5&css&js 078 JavaScript 条件判断语句
条件判断语句是首先要接触的语句。通过条件判断来执行不同的代码块。