Html IE6:如何使内联base64映像与IE6一起工作?

Html IE6:如何使内联base64映像与IE6一起工作?,html,internet-explorer,image,conditional,base64,Html,Internet Explorer,Image,Conditional,Base64,如何让IE6显示内联base64编码图像 <img src="data:image/png;base64,....." /> 这适用于Firefox/Chrome/Safari,但不适用于IE6。是否安装谷歌的Chrome框架 说真的,你不能。IE6不支持base64内联图像。如果这不是为公司设置的,我会说干脆把IE6支持全部放下,如果人们坚持使用这样一个过时的浏览器,就让他们安装。 我认为IE6不支持标记的内嵌数据。但是,您可能需要尝试另一种格式,如GIF或JPG 编辑 考虑

如何让IE6显示内联base64编码图像

<img src="data:image/png;base64,....." />


这适用于Firefox/Chrome/Safari,但不适用于IE6。

是否安装谷歌的Chrome框架


说真的,你不能。IE6不支持base64内联图像。

如果这不是为公司设置的,我会说干脆把IE6支持全部放下,如果人们坚持使用这样一个过时的浏览器,就让他们安装。

我认为IE6不支持
标记的内嵌数据。但是,您可能需要尝试另一种格式,如GIF或JPG

编辑
考虑到IE花了很长时间才准确地支持PNG(仍有争议),人们可以很容易地推断PNG可能不支持作为
标记的在线数据格式。话虽如此,goto
**ORIGINAL**

您至少可以在CSS中使用base64。 请看一看:


也许更多的研究可能有助于将mhtml://用于内联图像。

IE6需要一个表达式来正确解释Base64编码图像。迪安·爱德华兹在这里描述了解决方案:


注意:这是一个非常丑陋的黑客。首先,我们将图像代码放入CSS中;使用此解决方案,您需要将表示数据放在Javascript中,或者将行为数据放在CSS中。讨厌但必要。

我的解决方案在IE6上运行顺利。它可能会帮助你

<!--
Content-Type: multipart/related; boundary="=_data-uri"
-->
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#pic {
width:670px;height:710px;
background-image: expression("url(mhtml:" + window.location + "!locoloco)");
}
</style>
</head>
<body> 

<div id="pic" ></div>
<div id=test style="display: none;">

--=_data-uri
Content-Location:locoloco
Content-Transfer-Encoding:base64

iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8  /w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
--=_data-uri--

</div>
</body>
</html>

#图片{
宽度:670px;高度:710px;
背景图像:表达式(“url(mhtml:+window.location+”!locoloco)”;
}
--=\u数据-uri
内容地点:乐科
内容传输编码:base64
IVBORW0KGGOAAAANSUHEUGAAAAAFCAYAAACNBYBLAAAHELEQI12P4//8/W38 GIAXDIBKE0DHXGLJNBAO9TXL0Y4OHWAAAABJRU5ERKJGG==
--=\u数据-uri--

这可能是一个快速修复方法,可以使Base64图像再次显示在IE6中:

*很抱歉断开了链接,现在是正确的链接


我认为这是一种非侵入性的方式,可以让事情再次运转起来。在IE上已经显示了那些损坏的图像(损坏的图标)之后,它实际上会修复这些图像。

base64图像将显示在IE6和IE7中。。。在上一篇文章中,当您在css中使用编码图像时,我找到了一个简单的解决方案

“在同一个类中编写两个属性。使用css浏览器特有的技巧”

我将在下面解释它

   <div class="myClass">    </div>
    <style>
            .myClass{
                    background=url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAHCAYAAADam2dgAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAySURBVHjaYlSdd/4/AwQwQml0PgMTHsn/yIoYCCmEKcKrEFkRTrcxEVIAs46g7wACDACraA+g90OOjwAAAABJRU5ErkJggg%3D%3D'); 
    /* Above property will work for all browsers*/

                    *background=url('give real path_to_image'); 
/* This will work only for ie6 and ie7 */
                    }
        </style>

.myClass{
背景=url(“数据:图像/png;base64,IVBORW0KGGOAAAANSUHEUGAAAAKAAAAHCAYAAADAM2DGAABGDBTUEAK/INWWK6QAABL0RVH0U29MDHDHCMUAQWRVYMUGW1HZ2VSZWFKEXHJZWAAAAYSURBHJAYLSDD/4/AwQwQml0PgMTHsn/YIOYCCMECKREFCKTRCXEVIAS46G7WACDACRAA+g90OOjwAAAABJRU5ErkJggg%3D”);
/*上述属性适用于所有浏览器*/
*background=url('give real path_to_image');
/*这只适用于ie6和ie7*/
}


我是否可以执行条件语句,以便IE6链接到实际文件,但对于所有其他文件,它都显示base64?您必须使用javascript动态设置src,这在我看来是非常麻烦的。从服务器加载图像不是一件坏事;这意味着用户可以缓存多个页面加载。你为什么要让它们内联呢?Chrome框架的可悲之处在于,企业不会开始选择它——而他们仍然在使用IE6。因此,这是相对愚蠢和悲伤的所有在同一时间。这是一个有趣的想法,但是浪费在了开发人员身上,而不是最终用户身上。条件注释应该可以完成这项工作,但是为什么要包含base64映像呢?它将比原始图像大,浏览器可以更快地加载单独的图像文件。如果您想要一个文件,您可能需要查看适用于IE5及以上版本的MHTML(.mht)文件格式。但在其他浏览器中的支持很差。请参阅。对于许多小图像,我会使用sprites。我可以使用条件语句使IE6链接到实际文件,但对于所有其他文件,它会显示base64吗?视情况而定,您是否使用像PHP这样的脚本语言?PHP有何帮助?这必须在客户端执行。不,只是HTMLIf如果您要使用PHP或任何其他web语言,您可以检查用户的代理字符串并据此做出决定。@darkassassin93:Jacob指的是条件HTML注释,这是IE特有的功能,用于支持HTML中特定于浏览器的行为。看看好奇:你(或任何人)为什么要这么做?难道不是所有浏览器都首选可缓存图像吗?在外部CSS文件中似乎很好,但在HTML中却不行。可缓存为:任何像往常一样下载并可由浏览器缓存的图像。或者这在一些单文件、非托管HTML中使用?内联减少HTTP请求。@Jacob:Inline可能会减少HTTP请求的数量,但1)您必须传输更多数据,因为编码会使二进制图像数据变大,2)如果图像是可以并行下载的独立资源,现代浏览器可以更快地加载页面,3)缓存可能无法正常工作,尤其是在动态生成页面的情况下。如果您担心http请求,您可能需要查看图像的精灵。然后,您只需对页面和所有图像执行两个http请求。这可能对您的情况没有帮助,例如,如果您正在生成html和单个图像。如果IE6不支持内嵌数据,那么格式是什么会有关系吗?也许mimetnet认为问题在于缺少PNG支持,在这种情况下GIF或JPG可能会起作用。IE6支持PNG(但没有alpha透明,尽管似乎有解决办法,请参阅)IE从4.x版本开始就支持PNG(尽管透明PNG很麻烦)IE6实际上支持PNG。它只是不支持32位alpha通道。你能解释一下这里发生了什么吗?它看起来很有趣,但例如…!locoloco?@Chris这使用了多部分HTML(见下面我的答案)-