ie mhtml

UPDATE: It's very important to have a closing separator in the MHTML document, otherwise there are known issues in IE7 on Vista or Windows 7. The details are here.

更新:在MHTML文档中有一个分隔符非常重要,否则在Vista或Windows 7的IE7中存在已知问题。详细信息在这里。

In the previous post I described what data: URIs are and how they are useful to reduce the number of HTTP requests. Now, the problem with data: URIs is that they are not supported by IE < 8. But, thanks to this article (in Russian), here's a way to work around that limitation: using MHTML for IE7 and under.

在上一篇文章中,我描述了什么数据:URI是什么以及它们如何减少HTTP请求的数量。 现在,数据存在问题:URI <IE <8不支持URI。但是,感谢本文(俄语),这是解决该限制的一种方法:将MHTML用于IE7及以下版本。

MHTML-什么? (MHTML-a-what?)

MHTML is MIME HTML, or if you insist on me spelling it out completely is like "Multipurpose Internet Mail Extensions HyperText Markup Language". In short it's HTML but like email with attachments. In one "multipart" email you can have several... hm, things - HTML version of the email, text-only version, attachment, another attachment...

MHTML是MIME HTML,或者如果您坚持要我完全将其拼写出来,就像“多用途Internet邮件扩展超文本标记语言”。 简而言之,它是HTML,但就像带有附件的电子邮件一样。 在一个“多部分”电子邮件中,您可以有多个...嗯,事情-电子邮件HTML版本,纯文本版本,附件,另一附件...

MHTML is the same but for HTML. In one file you put a bunch of stuff (e.g. image files) and you save on the precious HTTP requests.

MHTML相同,但HTML相同。 在一个文件中,您放了一堆东西(例如图像文件),然后保存了宝贵的HTTP请求。

MHTML范例 (MHTML example)

Let's check out an example. The HTML is actually not important, it's the CSS where we'll stick all our inline images. Once with data: sheme for all normal browsers and once with the mhtml: scheme for IE before 8.

让我们来看一个例子。 HTML实际上并不重要,它是CSS,我们将粘贴所有内嵌图像。 一次使用数据:sheme适用于所有普通浏览器,一次使用mhtml:方案(适用于8之前的IE)

The overall "template" would look like so:

整体“模板”如下所示:

/*
Content-Type: multipart/related; boundary="_ANY_SEPARATOR"
--_ANY_SEPARATOR
Content-Location:somestring
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAA[...snip...]SuQmCC
--_ANY_SEPARATOR--
*/
#myid {
/* normal browsers */
background-image: url("data:image/png;base64,iVBORw0[...snip...]");
/* IE < 8 targeted with the star hack */
*background-image: url(mhtml:http://phpied.com/mhtml.css!somestring);
}

The multipart stuff goes into a CSS comment. You then use data: URI scheme for all normal browsers. Then you use the star hack to target IE browsers before 8. For these browsers you give the URL of the CSS, exclamation and then a string that uniquely identifies the desired "part" in the multipart comment. Simple, eh? Didn't think so, but hey, it's not exactly rocket science.

多部分内容放入CSS注释中。 然后,对所有普通浏览器使用data:URI方案。 然后,您可以使用star hack将IE浏览器定位到8之前的版本。对于这些浏览器,您提供CSS的URL,感叹号,然后提供一个字符串,该字符串可在多部分注释中唯一标识所需的“部分”。 简单吧? 没这么认为,但是,嘿,这不是火箭科学。

包含更多部分的演示示例 (Demo example with more parts)

Check out a demo page that has two "parts" in the multipart MHTML comment.

签出一个演示页面,该页面在多部分MHTML注释中具有两个“部分”。

The HTML is noting special and the CSS goes like:

HTML值得注意,CSS类似于:

/*
Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR"
--_ANY_STRING_WILL_DO_AS_A_SEPARATOR
Content-Location:locoloco
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC
--_ANY_STRING_WILL_DO_AS_A_SEPARATOR
Content-Location:polloloco
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAABkAAAAUBAMAAACKWYuOAAAAMFBMVEX///92dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYvD4PNAAAAD3RSTlMAACTkfhvbh3iEewTtxBIFliR3AAAAUklEQVQY02NgIBMwijgKCgrAef5fkHnz/y9E4kn+/4XEE6z/34jEE///A4knev7zAwQv7L8RQk40/7MiggeUQpjJff+zIpINykbIbhFSROIRDQAWUhW2oXLWAQAAAABJRU5ErkJggg==
--_ANY_STRING_WILL_DO_AS_A_SEPARATOR--
*/
#test1 {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC"); /* normal */
*background-image: url(mhtml:http://phpied.com/files/mhtml/mhtml.css!locoloco); /* IE < 8 */
}
#test2 {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUBAMAAACKWYuOAAAAMFBMVEX///92dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYvD4PNAAAAD3RSTlMAACTkfhvbh3iEewTtxBIFliR3AAAAUklEQVQY02NgIBMwijgKCgrAef5fkHnz/y9E4kn+/4XEE6z/34jEE///A4knev7zAwQv7L8RQk40/7MiggeUQpjJff+zIpINykbIbhFSROIRDQAWUhW2oXLWAQAAAABJRU5ErkJggg=="); /* normal */
*background-image: url(mhtml:http://phpied.com/files/mhtml/mhtml.css!polloloco); /* IE < 8 */
}
div {
width: 100px;
height: 100px;
font: bold 24px Arial;
}

退税 (Drawback)

In addition to the drawbacks of data: URIs (bigger CSS, small CSS change invalidates your cached inline images), this method has the obvious drawback that the inline images are repeated twice. But sometimes... a person's gotta do what a person's gotta do

ie mhtml_MHTML –需要数据时:IE7及以下版本中的URI相关推荐

  1. mysql的条件求和函数_使用SQL语句统计数据时sum和count函数中使用if判断条件的讲解...

    首先举个栗子(不想看的话直接下面看总结): order_type:订单类型 open_id:用户唯一标识 SELECT date(create_time) AS '当天日期', sum(real_pr ...

  2. plsql插入数据时ORA-01950: 表空间'USERS'中无权限的2种解决办法

    问题 在oracle创建了一个新的表空间和一个新的用户,当用这个新用户创建表时, 却出现:ORA-01950: 表空 间'USERS'中无权限 . 我已经把创建表的权限赋给了此用户,怎么还会缺少权限呢 ...

  3. python函数式编程读取数据时出现错误_Python编程中,函数遇到问题是抛出错误好还是约定返回值好?...

    这其实是一个编码规范的问题,没有任何场景都适用的解决方案,就好比有了 list,但是还是需要 tuple,所以对于抛出异常好,还是返回值好,是需要具体情况看的. 在 C 语言中,通用的做法是函数返回一 ...

  4. python从文件中读取数据时出现错误_python-从文件中读取数据

    一.读取整个文件 learnFile.py 绝对路径 #coding=UTF-8 importsys reload(sys) with open(r'C:\Users\zhujiachun\Deskt ...

  5. ajax返回的数据怎么显示出来_Excel输入汉字、拼音首字母就能显示数据出来,录数据时逐步提示...

    在办公中经常需要录入数据,特别是财务,人力资源,采购这块,经常需要 如果经常复制.粘贴很累,即使用到数据有效性进行设置,数据量多了,也不好选择. 所以,这里介绍两个Excel插件E灵和EXCEL必备工 ...

  6. MySQL导出数据反单引号_使用mysqldump导出数据时对字段中包含的单引号的处理

    最近在做一个日志统计项目,有一个辅助表是在MySQL数据库的,现在要将其迁移到Postgresql,自然是先用mysqldump将MySQL里面的数据导出,然后再导入到Postgresql即可.但在实 ...

  7. 从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法...

    注意,64位系统,用64位的补丁文件; https://www.cnblogs.com/A2008A/articles/2438962.html 操作系统:使用的是64位的Windows Server ...

  8. bartender外部表不是预期格式_批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况...

    很多朋友在用Power Query合并(汇总)Excel数据时,碰到过"DataFormat.Error:外部表不是预期格式"或"DataFormat.Error:文件包 ...

  9. 存储mysql数据存在特殊字符时处理_转义 存储数据时特殊符号的处理

    function url_base64_encode($str){ //将这个方法处理后的数据可以存储,不会有特殊符号 if($str=="") return "&quo ...

最新文章

  1. HDU 2080 夹角有多大II
  2. 盘点|应用落地,构建城市“大脑”
  3. what should you do if you want to have a high efficiency for communication
  4. 分数换算小数补0法_分数怎么化成整数 分数转化方法
  5. python之字符串连接
  6. SQL Server 关联
  7. 第四章 ---- 事务RedisTemplate
  8. android 退出代码
  9. mac中的echo颜色输出
  10. 2019-C语言二级考试题库
  11. filco圣手二代蓝牙连接win10系统(华硕笔记本)
  12. Markdown+取数函数 让你的数据活起来
  13. 金弘同创教育:拼多多店铺分数多久清算一次
  14. 用什么软件记录学员考勤好?
  15. 推荐12个免费查找文献的学术网站,建议点赞、收藏!
  16. 垃圾回收篇~~垃圾回收概述
  17. java手机 上网_Java也懂智能! 中低端手机上网小攻略
  18. 第十二章 牛市股票还会亏钱-外观模式(读书笔记)
  19. OPENCV入门教程九:图像旋转任意角度
  20. windows建立隐藏账户

热门文章

  1. USB-C为什么可以取代传统接口?消费类电子产品如何改用TYPE-C接口?
  2. MSVC ++ Version
  3. 【星海出品】数据库原理
  4. 3DUnity(记录碰到的小问题) 2D模式下调整Sorting Layer后物体变成黑色
  5. nnunet(二十二) preprocessing
  6. 软件本地化常用工具综述
  7. ​TOIS 2022 | 面向用户和商品双侧流行性偏差的自适应公平推荐方法
  8. 深度解析销售线索:定义、收集、管理、验证、评分、转化...
  9. DDR3中bank, 16bit和32bit等概念
  10. 企业CDN的简单搭建-varnish