以IE10为目标,在html标签上添加一个IE10类
Targeting IE10 with an IE10 class appended to the html tag
我在我们网站上实现的Extjs元素有一些问题,需要执行一些IE10特定的样式来解决这些问题。我知道IE10不再支持旧的IE风格的注释,你可以有条件地指定一个不同的html标签,根据IE的版本添加不同的类。所以,在这种情况下,我将不得不使用jQuery来添加一个IE10类的HTML标签,这不是最好的解决方案,但由于我们的用户被要求启用Javascript,这是我们目前最好的选择。
我目前正在使用以下代码段来尝试实现这一点:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type="text/javascript">
if ($.browser.msie && $.browser.version == 10) {
$("html").addClass("ie10");
}
</script>
然而,如果我在开发人员模式下查看IE10中页面的源代码,没有任何内容被附加到HTML标签。然后我使用Firebug(因为IE开发人员工具很糟糕)来检查我使用的脚本是否有任何问题,我在控制台中有以下消息:
TypeError: $.browser is undefined
[Break On This Error]
if ($.browser.msie && $.browser.version == 10) {
由于我很少使用Javascript进行浏览器检测,我承认我从网上借用了这个脚本,所有的评论都表明它有效,但正如你所看到的,它显然不起作用。
有没有人有任何想法,如何这可以适应,使它的工作或确实有任何替代方案,我可以用我的CSS专门针对IE10 ?
你可以使用条件编译只获得IE10,这是一个好方法,因为它不依赖于jQuery或任何可能被欺骗的东西。
在IE8, IE9, IE10, Chrome上进行了测试,结果均与预期一致。
用法:
if(Function('/*@cc_on return document.documentMode===10@*/')()){ $("html").addClass("ie10"); }
继续阅读:https://stackoverflow.com/a/13971998/1711038
jQuery的$.browser
函数自jQuery v1.3以来已弃用。
对您来说更重要的是,在1.9版本中,jQuery删除了许多旧的不赞成的特性,包括这个。这就是它不适合你的原因。
如果您必须使用旧的已弃用的特性,jQuery开发人员确实提供了一个单独的迁移库来恢复所有旧的特性。但这只是一种短期的权宜之计;建议的解决方案是修复代码,使其不使用旧功能。
jQuery弃用$.browser
的原因是浏览器检测被认为是糟糕的实践。在几乎所有你想要做的情况下,都有一个更好的、更符合标准的方法来解决问题,而且浏览器越新,就越有可能出现这种情况——有很好的理由仍然在IE6和类似的浏览器中使用浏览器检测,但IE10是一个相当不错的浏览器,如果你真的遇到了一个无法克服的问题,我会感到惊讶。
有几种方法可以检测IE10(我注意到你已经接受了一个答案),但说实话,我想说你最好找到你所拥有的样式问题的潜在原因,并修复它,因为否则当IE11发布时,你将再次做这整个练习。
当你使用ExtJS为什么不使用它来解决问题?
ExtJS 3.4.0不识别ie10,但有一个覆盖可用:https://market.sencha.com/extensions/ext-isie10-for-extjs-3-x
则可以使用:
if (Ext.isIE10){
Ext.fly(document.body.parentNode).addClass('ie10');
}
工作代码:Ext.onReady(function () {
// override v3.4.0 ie10 = ie6 bug
// https://market.sencha.com/extensions/ext-isie10-for-extjs-3-x
(function() {
var ua = navigator.userAgent.toLowerCase();
check = function(r) {
return r.test(ua);
},
isIE10 = Ext.isIE && check(/msie 10/),
isIE6 = Ext.isIE && !Ext.isIE7 && !Ext.isIE8 && !Ext.isIE9 && !isIE10;
/**
* True if the detected browser is Internet Explorer 6.x.
* @type Boolean
*/
Ext.isIE6 = isIE6;
/**
* True if the detected browser is Internet Explorer 10.x.
* @type Boolean
*/
Ext.isIE10 = isIE10;
})();
if (Ext.isIE10){
Ext.fly(document.body.parentNode).addClass('ie10');
}
});
如果您只对IE浏览器检测感兴趣,那么我们使用以下方法,这似乎是有效的。您可以通过传递正确的ID来更改要添加的DIV。
<!--[if IE 10]>
<script type="text/javascript">
$(document).ready(function() {
$("#ieFix").addClass("ie10");
});
</script>
<![endif]-->
Layout Engine使用特征检测来确定浏览器/浏览器版本,并在html标签中添加适当的css类。它可以检测IE11, IE10, IE9, IE8和IE7,以及其他流行的浏览器,包括一些移动浏览器。http://mattstow.com/layout-engine.html
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- IE10在打开窗口并再次打开另一个窗口时不起作用
- 为什么我的一个顶级菜单项在 ONLY ie10 中未对齐
- IE10只给了我一个'无法计算表达式'更改样式时出错
- 在ie10,9中选择选项(html 5标签)在下一个输入(html 5标签)的位置
- 当重定向到另一个页面时,Cookie在IE10中丢失
- 以IE10为目标,在html标签上添加一个IE10类