首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

[转]data部类的Url格式:把小数据直接嵌入到Url中

2012-11-16 
[转]data类型的Url格式:把小数据直接嵌入到Url中小例子下面这个html代码可以在支持data类型Url的浏览器中

[转]data类型的Url格式:把小数据直接嵌入到Url中


小例子
下面这个html代码可以在支持data类型Url的浏览器中运行,例如Firefox。运行后会看到一条蓝色渐变底色的标题。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"??"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head><style type="text/css">.title {??background-image:url(data:image/gif;base64,R0lGODlhAQAcALMAAMXh96HR97XZ98Hf98Xg97DX97nb98Lf97vc98Tg973d96rU97ba97%2Fe96XS9wAAACH5BAAAAAAALAAAAAABABwAAAQVMLhVBDNItXESAURyDI2CGIxQLE4EADs%3D);??background-repeat:repeat-x;??height:28px;??line-height: 28px;??text-align:center;}</style></head><body><div />可以在Css的background-image属性中使用,例如

div.image {??width:100px;??height:100px;??background-image:url(data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAF...);}可以在Html的Css链接处使用,例如

<link rel="stylesheet" type="text/css"??href="data:text/css;base64,LyogKioqKiogVGVtcGxhdGUgKioq..." />可以在Html的Javascript链接处使用,例如

<script type="text/javascript"??href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>完整的语法定义
在RFC中,完整的语法定义如下。

dataurl? ? := "data:" [mediatype] [";base64"] "," datamediatype??:= [type"/"subtype] *( ";" parameter )data? ?? ? := *urlcharparameter??:= attribute "=" valueurlchar指的就是一般url中允许的字符,有些字符需要转义,例如"="要转义为"%3D",不过我测试下来,至少在Firefox里面,不转义也是可以的。

parameter可以对mediatype进行属性的扩展,常见的是charset,用来定义编码格式,在多语言情况下需要用到。例如下面的例子。

data:text/plain;charset=UTF-8;base64,5L2g5aW977yM5Lit5paH77yB这个例子会显示出"你好,中文!"。如果吧charset部分去掉,就会显示乱码,因为我用的是UTF-8编码。

Firefox有一个data类型Url的测试页面,列出了各种格式的data类型Url的测试Url,和测试结果说明。

base64编码和内容的隐秘
把二进制数据转换成为Base64不是什么难事,比如Total Commander就有这样的功能。还有一些在线资源,

http://www.greywyvern.com/code/php/binary2base64
http://www.kawa.net/works/js/data-scheme/base64-e.html
有些在线转换把base64里面的“=”转换成为%3D,这个在Url中和“=”是一样的,不转换也没什么问题。

当然,这种Url还有一种隐秘的好处,就是将一些道貌岸然者不喜欢的东西,堂而皇之的放在页面上,例如下面这个数据。你可以Copy下来贴到地址栏里面去瞅瞅,呵呵呵[转]data部类的Url格式:把小数据直接嵌入到Url中)

热点排行