解决IE 7.0不能显示PNG图片的问题

IE7.0无法显示PNG图片,经过排查发现与QuickTime及注册表中乱码MIME类型有关。通过删除乱码MIME类型解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近也不知道装了什么软件,IE 7.0突然就不能显示任何的PNG图片了,全都是个红叉,连IE自己的错误页面也全是叉,实在是惨不忍睹。在网上找了半天,找到几个类似的情况,有人说是QuickTime改写了注册表,有人说什么png的一个pngfilt.dll被破坏了(谁吃饱了破坏这个dll?),解决方法是重新导入注册表并且重新注册那个dll。结果我一看注册表,果然QuickTime似乎破坏了它,因为和png相关的默认的地方都有了QuickTime的影子。但是导入正确的注册表也不行,重新注册那个dll也不行。又反复比较和导入了别人好的IE 7.0的机器上的注册表,也不行。网上下载的那个png相关的dll文件其实是IE 6.0用的,所以也不能用。甚至重装了IE都不行。

今天誓要搞定这个问题,于是用regmon一条一条看,看看IE在访问一个png图片的时候到底干了什么。微软确实是充分利用了注册表,为了访问一个png图片,IE居然就对注册表操作了两千六百多次。果然,这些记录里面既没有找到pngfilt.dll,也没有找到它的CID,但还是没啥头绪。突然发现,IE似乎枚举了一堆MIME的类型,其中居然有个类似“????µ/x-m4v”的奇怪类型。去注册表一看,果然有三个x-m4v,第一个就是那个乱码,第二个是“video/x-m4v”,第三个是“视频/x-m4v”,看来第一个应该是“视频”没搞好弄出来的(因为“视频”这两个字的GB2312码到ASCII中会变成ÊÓÆµ)。这个乱码的破玩意儿看着就不顺眼,删之。没想到,IE居然从此就可以显示PNG了!!

从来没想过MIME类型居然可以注册成中文的,因为其中有编码的问题,估计那个“视频/x-m4v”和乱码可能是什么国产播放器的杰作。而IE也是莫名其妙,怎么会多出个乱码类型PNG就挂了呢?为啥其他的MIME类型可以显示?
<think>好的,用户的问题是如何检测IE11并在页面上提示用户切换到Edge浏览器的极速模式。首先,我需要回忆一下如何通过JavaScript检测浏览器类型和版本。 我记得可以使用navigator.userAgent来获取浏览器的用户代理字符串。对于IE11,用户代理字符串中可能没有"MSIE"这个标识,而是包含"Trident"和"rv:11.0"这样的信息。所以需要编写一个正则表达式来匹配这种情况。 接下来,用户希望在检测到IE11时显示提示信息,引导用户切换到Edge的极速模式。根据引用内容,极速模式通常使用WebKit或Chromium内核,而IE兼容模式使用Trident内核。所以需要提示用户如何切换,比如在Edge中开启IE模式或者QQ浏览器中切换内核。 然后,考虑到用户可能使用不同的浏览器,比如Edge本身已经支持双模式,可能需要指导用户如何在Edge中启用IE兼容模式,或者在QQ浏览器等双核浏览器中切换到极速模式。不过用户的问题特别提到的是在IE11中提示切换到Edge的极速模式,可能需要直接建议用户使用Edge浏览器,并指导他们如何开启极速模式。 另外,引用3中提到,国内很多网站需要Trident内核,但非交易类网站可以使用极速模式。因此,提示用户根据情况切换模式是有必要的。 最后,需要确保代码的正确性,比如正确检测IE11,并且只在IE11时显示提示,同时提供关闭提示的按钮,以提升用户体验。</think>要实现检测IE11并提示用户切换到Edge浏览器的极速模式,可以按照以下步骤实现: 1. **IE11检测逻辑** 通过JavaScript的`navigator.userAgent`检测浏览器标识: ```javascript // 检测IE11(IE11的UA不含MSIE,但包含Trident/7.0) const isIE11 = !!window.MSInputMethodContext && !!document.documentMode; if (isIE11) { showBrowserWarning(); } ``` 2. **创建提示横幅** 在页面顶部添加可见的提示信息: ```html <div id="ie-warning" style="background:#fff8e6; padding:10px; border-bottom:1px solid #ffd699"> <span>检测到您正在使用IE浏览器,推荐切换至Edge浏览器的极速模式获得更佳体验!</span> <button onclick="closeWarning()" style="margin-left:20px">×</button> </div> ``` 3. **操作指引实现** 根据引用[3]的双核浏览器原理,添加具体切换指导: ```javascript function showBrowserWarning() { const warningDiv = document.createElement('div'); warningDiv.innerHTML = ` <p>切换方法:</p> <ul> <li>Edge浏览器:地址栏右侧点击<img src="ie-icon.png" width="16">切换为Edge模式[^2]</li> <li>QQ浏览器:地址栏右侧切换"极速模式"(闪电图标)[^3]</li> </ul> `; document.body.prepend(warningDiv); } ``` 4. **兼容性处理** 通过`@media`查询确保提示栏在移动端正常显示: ```css @media (max-width: 768px) { #ie-warning { font-size: 14px; padding: 8px; } } ``` **实现原理**: - 通过UA检测识别IE11,但需注意IE11的UA特征为`Trident/7.0`且不含`MSIE`标识[^1] - 极速模式对应Chromium内核,相比IE的Trident内核有更好的性能和新特性支持[^3] - 提示信息需包含具体操作指引,符合国内双核浏览器的通用切换方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值