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. 神经网络和深度学习简史(三)
  2. git cherry-pick 使用
  3. 共享一个简单的 Javacript Helper library
  4. C++学习笔记(五)--指针、NULL、引用
  5. count(1),count(*),count(主键) 性能对比及辟谣
  6. 英语学习笔记2019-11-29
  7. windows 系统更新 WSUS的安装与部属
  8. iOS 对付内存泄漏,来说说我的调试方法
  9. 米莱狄机器人怎么那么多_米莱狄究竟应该怎么玩?
  10. jquery 添加扩展方法及为选择的对象添加方法
  11. 数据挖掘之apriori算法(python实现详细注释)
  12. 麻省理工18年春软件构造课程阅读10“抽象数据类型”
  13. LabVIEW基于Kvaser USBcan的UDS烧录Hex文件
  14. 创维电视安装第三方app
  15. linux device 与driver prove 过程
  16. 广度优先搜索(C语言实例)
  17. 数据集成之数据整合(Data Consolidation)
  18. 02读书笔记:《编码》-隐匿在计算机软硬件背后的语言(12-14章)
  19. Oracle性能优化 以及 库缓存命中率及等待事件
  20. Python在Excel单元格中写入公式

热门文章

  1. MinGW与MSVC
  2. GNU风格的软件版本号命名规范
  3. 正点原子IMX6ULL阿尔法测评感知
  4. 2017你认为值得推荐的技术书
  5. dashboard添加公网接口配置流程、网卡修改默认路由流程【我这系公有云】
  6. 经商之道 ,无德必无财
  7. 133、仿真-基于51单片机太阳能热水器水温水位智能监控仪报警设计(Proteus仿真+程序+配套资料等)
  8. Allstate美国好事达保险公司理赔预测模型案例_企业科研_论文科研_毕业设计
  9. svn子命令 svn blame
  10. vue3 + gzip +nginx 部署 静态文件被识别成text/html的问题