IE中的条件注释(未解决)
2015-11-23 21:06
183 查看
今日工作的时候,我需要解决一个问题,是实现让一个网页在IE8及以下或者是使用了这些内核加载该网页的浏览器弹出提醒用户更换更新浏览器的提示。
以下是解决过程的一些描述:
首先想到的是用JS实现,所以以此为条件百度了几段代码,但是发现在我用IEtester测试的时候低版本(4、5、6)没有弹窗,当时有些急躁所以未想到这些版本的浏览器对js的兼容程度是什么情况(还记得jQ文件在低版本IE都有报错弹窗提醒)。
后来文哥给我提供了一种方法是使用IE特有支持的条件注释:<!--[if IE]><![endif]-->当时我没有多想这种结构的组成原理或是生效原理之类的,就在那里埋头试,发现一个问题就是当我使用猎豹、360等浏览器的极速模式进入页面然后在切换到IE兼容模式之后,无论我是关闭现有页面,从新页面重新输入地址进入;还是清除缓存之后再次输入地址;或是手动在原有页面切换为极速模式;---都无法再次以极速模式(即非IE内核)打开原有页面,不断地刷新和找寻方法都是默认以IE模式打开页面
<!--[if lte IE 8]><script>window.location.href='http://cdn.dmeng.net/upgrade-your-browser.html?referrer='+location.href;</script><![endif]-->此问题至今未解决,后来的解决方法是直接进行弹窗,而不进行地址转换(和它所带来不知为何的默认内核打开方式的变化)
今天的发现:
条件注释:
条件注释只能用于Explorer 5+ Windows(以下简称IE).
如果你安装了多个IE,条件注释(Conditional comments)将会以最高版本的IE为标准(一般为IE 6)。
我听说(但没测试过),当在条件注释中使用了小数点,且只安装了IE5.0的时候,将会产生一个不正确的判断。
以上为摘录,遗憾的是似乎条件注释之所以是IE特有,是因为它的条件只是IE版本(。。。)如<!--[if IE7]>为查询浏览器版本为IE7;
除此之外有两个特殊的语法:
gt :大于
<!--[if gt IE7]><![endif]--> 浏览器为IE7或以上时生效
lte:小于或等于
<!--[if lte IE7]><![endif]--> 浏览器为IE7或以下时生效
注意支持条件注释是IE5或以上(并且IE5支持很初步)
可以用来为低版本IE样式进行重定义或是对低版本进行提示等操作
知识来源:http://www.cnblogs.com/poissonnotes/archive/2010/05/28/1745996.html
navigator对象:
包含浏览器返回的版本信息、内核信息等:http://www.w3school.com.cn/jsref/dom_obj_navigator.asp
工作的时候发现双核的浏览器在使用不同内核的时候navigator会返回不同的信息,而不是同时把两者一起返回,并且浏览器也会披着”羊皮“,假装能兼容其他不同的一些内核,这个段子的来源可以在百度百科上略知一二
http://baike.baidu.com/link?url=xZeqYomtEAjG4MsQ0cfu39bCFTSsftpZIfar4HqcXkqFNJi8X0FUHPOUN2UzI8MW5OMDilTaP4Qy8UDDNzDmmKajnjkbJl0IsBaypOUVIeGuHPwjl-BSETepJhfqVJvoHRAI6tVebDfwhfdJLkrMo_url=xZeqYomtEAjG4MsQ0cfu39bCFTSsftpZIfar4HqcXkqFNJi8X0FUHPOUN2UzI8MW5OMDilTaP4Qy8UDDNzDmmKajnjkbJl0IsBaypOUVIeGuHPwjl-BSETepJhfqVJvoHRAI6tVebDfwhfdJLkrMo_
以下是解决过程的一些描述:
首先想到的是用JS实现,所以以此为条件百度了几段代码,但是发现在我用IEtester测试的时候低版本(4、5、6)没有弹窗,当时有些急躁所以未想到这些版本的浏览器对js的兼容程度是什么情况(还记得jQ文件在低版本IE都有报错弹窗提醒)。
后来文哥给我提供了一种方法是使用IE特有支持的条件注释:<!--[if IE]><![endif]-->当时我没有多想这种结构的组成原理或是生效原理之类的,就在那里埋头试,发现一个问题就是当我使用猎豹、360等浏览器的极速模式进入页面然后在切换到IE兼容模式之后,无论我是关闭现有页面,从新页面重新输入地址进入;还是清除缓存之后再次输入地址;或是手动在原有页面切换为极速模式;---都无法再次以极速模式(即非IE内核)打开原有页面,不断地刷新和找寻方法都是默认以IE模式打开页面
<!--[if lte IE 8]><script>window.location.href='http://cdn.dmeng.net/upgrade-your-browser.html?referrer='+location.href;</script><![endif]-->此问题至今未解决,后来的解决方法是直接进行弹窗,而不进行地址转换(和它所带来不知为何的默认内核打开方式的变化)
今天的发现:
条件注释:
条件注释只能用于Explorer 5+ Windows(以下简称IE).
如果你安装了多个IE,条件注释(Conditional comments)将会以最高版本的IE为标准(一般为IE 6)。
我听说(但没测试过),当在条件注释中使用了小数点,且只安装了IE5.0的时候,将会产生一个不正确的判断。
以上为摘录,遗憾的是似乎条件注释之所以是IE特有,是因为它的条件只是IE版本(。。。)如<!--[if IE7]>为查询浏览器版本为IE7;
除此之外有两个特殊的语法:
gt :大于
<!--[if gt IE7]><![endif]--> 浏览器为IE7或以上时生效
lte:小于或等于
<!--[if lte IE7]><![endif]--> 浏览器为IE7或以下时生效
注意支持条件注释是IE5或以上(并且IE5支持很初步)
可以用来为低版本IE样式进行重定义或是对低版本进行提示等操作
知识来源:http://www.cnblogs.com/poissonnotes/archive/2010/05/28/1745996.html
navigator对象:
包含浏览器返回的版本信息、内核信息等:http://www.w3school.com.cn/jsref/dom_obj_navigator.asp
工作的时候发现双核的浏览器在使用不同内核的时候navigator会返回不同的信息,而不是同时把两者一起返回,并且浏览器也会披着”羊皮“,假装能兼容其他不同的一些内核,这个段子的来源可以在百度百科上略知一二
http://baike.baidu.com/link?url=xZeqYomtEAjG4MsQ0cfu39bCFTSsftpZIfar4HqcXkqFNJi8X0FUHPOUN2UzI8MW5OMDilTaP4Qy8UDDNzDmmKajnjkbJl0IsBaypOUVIeGuHPwjl-BSETepJhfqVJvoHRAI6tVebDfwhfdJLkrMo_url=xZeqYomtEAjG4MsQ0cfu39bCFTSsftpZIfar4HqcXkqFNJi8X0FUHPOUN2UzI8MW5OMDilTaP4Qy8UDDNzDmmKajnjkbJl0IsBaypOUVIeGuHPwjl-BSETepJhfqVJvoHRAI6tVebDfwhfdJLkrMo_
相关文章推荐
- 许多数据中心的工作者很满意他们的工作,将鼓励他们的孩子继续从事这份工作
- 异步流程控制:7 行代码学会 co 模块
- [译] React 入门
- 零编程经验的我是如何找到工作的
- 自己动手写的javascript前端等待控件
- 前端必备神器 Snap.svg 弹动效果
- 到初创公司工作的五个理由
- 一张Web前端的思维导图分享
- 浅谈AngularJS--基础
- 浅谈AngularJS--域变量(scope)
- AngularJS' Internals In Depth(深入理解 AngularJS)
- 3ff8 javascript 获取Flash下载进度兼容IE, FireFox,Chrome浏览器
- Pongo网页版JavaScript源代码及设计思路
- web前端开发工具
- 拟物设计和Angular的实现 - Material Design (持续更新)
- 小明版前端工程师装x和面试指南
- 泡WeX5论坛,就能把钱给挣了! WeX5论坛 金币制启动 -- 让大家帮助大家,让知识变成收益