ie11angularjs 兼容ie11js问题

关于IE11绑定change事件的问题 - 简书
关于IE11绑定change事件的问题
从IE 4开始,document.all在IE中举足轻重。比起document.getElementById()来说,document.all是IE方式的获取元素的引用的方法。尽管IE 5增加对DOM的支持,但document.all一直沿用至IE 10。而在Internet Explorer11中终于被废弃了,这意味着在Internet Explorer11中使用document.all的方法将可能导致执行失败,尽管使用了document.all的代码实际上还是可以工作。另外一个要废弃的是attachEvent()方法,该方法用于添加事件处理器,对应的detachEvent()用来移除事件处理器。这两个方法将在Internet Explorer 11中删除。移除这两个方法需要改用如下逻辑:
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数。过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验。比如onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效;而onkeydown/onkeypress/onkeyup在处理复制、粘贴、拖拽、长按键(按住键盘不放)等细节上并不完善。onpropertychange属性可在某些情况下解决上面存在的问题,不用考虑是否失去焦点,不管js操作还是键盘鼠标手动操作,只要HTML元素属性发生改变即可立即捕获到。遗憾的是,onpropertychange为IE专属的。其他浏览器下如果想要实现这一实时监听的需求,就要用到HTML5中的标准事件oninput,不过IE9以下的浏览器是不支持oninput事件的。
汇总onchange onpropertychange 和oninput事件的区别:
1、onchange事件与onpropertychange事件的区别:
onchange事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发;onpropertychange事件却是实时触发,即每增加或删除一个字符就会触发,通过js改变也会触发该事件,但是该事件IE专有。
2、oninput事件与onpropertychange事件的区别:
oninput事件是IE之外的大多数浏览器支持的事件,在value改变时触发,实时的,即每增加或删除一个字符就会触发,然而通过js改变value时,却不会触发;onpropertychange事件是任何属性改变都会触发的,而oninput却只在value改变时触发,oninput要通过addEventListener()来注册,onpropertychange注册方式跟一般事件一样。(此处都是指在js中动态绑定事件,以实现内容与行为分离) ,oninput支持FireFox2以上,chrome,Safari都支持,Opera10以上,IE9以上,onpropertychange仅支持IE10以下包括IE10
3、oninput与onpropertychange失效的情况:
(1)oninput事件:
a). 当脚本中改变value时,不会触发;
b).从浏览器的自动下拉提示中选取时,不会触发。
(2)onpropertychange事件:当input设置为disable=true后,onpropertychange不会触发。所以我们需要综合oninput和onpropertychange二者来实现文本区域实时监听的功能
DOM DOM节点 DOM的概念 DOM是文档对象模型(Document Object Model)的简称,它的基本思想是把结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口...
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数。过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验。比如onchange事件只...
* onchange事件 只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效 * onkeydown/onkeypress/onkeyup 在处理复制、粘贴、拖拽、长按键(按住键盘不放)等细节上并不完善 * onpropertychange 此属性可在某些情况...
1. onchange 事件与 onpropertychange 事件的区别: onchange 事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发;onpropertychange 事件却是实时触发,即每增加或删除一个字符就会触发,通过 js 改变也会触发该事件,...
1.Event对象 1.1 - Event对象的概念 事件:事件是文档或者浏览器窗口中发生的,特定的交互瞬间。 事件名:例如 click
load ... 事件处理函数:当执行某个事件发生的时候,执行的对应的函数称为事件处理函数,如果一个元素发生了某...
旅行最大的意义,就是因多看一些物,多 识一些人,而多得一点趣,多明一点理。 有些趣味,不换一处地儿,便无从获得。 有些道理,不经一些事儿,便无法懂得。 日 星期六 阴转小雨 在户部巷逛吃之后,我和友人直奔码头。江城的天气不好,人却暖心。感谢那个给我指路的老...
离开真新镇的三人组来到河边钓鱼。龙今天运气真好,钓上了白海狮,用嗡嗡(大针蜂)收服了它。苏钓到一只暴鲤龙,狩猎活动结束后,三人坐在草地上吃午餐,突然,下起了倾盆大雨,无奈,只好让地壳(圆陆鲨)用挖地洞,将就一下,先躲躲雨。 等雨不下了以后,龙带着两个伙伴,再去寻找一下有没有...
这篇主要讲解扎染的画法与扎法 先了解扎染的主要几步画法 扎染的图案主要由上述画法构成。 单线是最简单的,一条线,扎出来的图案比较单一,用于装饰分割图案。 块面可以是正方形、圆形、多边形,或者一些云朵、树叶……只要你扎成块状都都称为块面。需要注意的是块面的面积不能小于你的大手...
手动艾特@百目鬼十日
许群星没有秘密 许群星还要记录很多东西 许群星还是喜欢你!IE11中打开网站不兼容的终极解决方案
靠谱的软件下载站
当前位置: &///
IE11中打开网站不兼容的终极解决方案
阅读(19193)
在Win8.1的IE11环境里面,不少网站即使通过兼容视图也无法正常显示,为了应对网站不兼容的情况,我们给大家提供过很多方法,比如,或者,现在终于有了终极的解决方案了。我们只需先安装好Win8.1 2014 Update补丁,然后,就可以开启IE11的企业模式来正常显示那些网站了。不知道如何安装的,自己百度一下即可,非常简单!
首先,我们按&Win+Q&组合键打开搜索窗口,输入&gpedit.msc&命令打开组策略编辑器,依次定位到&计算机配置&管理模板&Windows组件&Internet Explorer&,在右侧选择&允许用户从&工具&菜单启用和使用企业模式&(如图1)选项;双击打开该选项,设置为&启用&(如图2);重启系统后,IE11的企业模式就可用了。
现在,你再在IE11浏览器中打开以前无法正常显示的网站时,只需单击&工具&企业模式&命令即可以IE8兼容模式访问了(如图3)。另一种启用企业模式的方法是:按F12打开开发工具,切换到&仿真&,更改&浏览器配置文件&为&企业&(如图4)。js快速判断IE浏览器(兼容IE10与IE11)
在很多时候,我们一般采用navigator.userAgent和正则表达来判断IE版本,下面介绍用IE浏览器中不同特性来判断IE浏览器
1 判断IE浏览器与非IE 浏览器
IE浏览器与非IE浏览器的区别是IE浏览器支持ActiveXObject,但是非IE浏览器不支持ActiveXObject。在IE11浏览器还没出现的时候我们判断IE和非IE经常是这么写的
function isIe(){
& & & &return window.ActiveXObject ? true :
但是在IE11中上面判断的返回的是false,我自己在IE11测试了下如下代码
alert(window.ActiveXObject);
alert(typeof window.ActiveXObject);
这是为什么呢?明明ActiveXObject是存在的,怎么就typeof的结果确实undefined。哪位知道结果的告诉我这是为什么呢?为神马?
微软上的官网说出了IE11的ActiveXObject的不同。https://msdn.microsoft.com/en-us/library/ie/dnv=vs.85%29.x。但是并没有解释typeof的原因。如果我们用下面的代码来检测是可以的
alert(&ActiveXObject& in window)//在ie11下返回的是false
这是我又不明白了&ActiveXObject& in window返回的是true,为什么以前判断IE浏览器的代码在IE11中返回的是false?再次求大牛们给个解释。谢谢&
下面就直接给出兼容IE11判断IE与非IE浏览器的方法。
function isIe(){
& & return (&ActiveXObject& in window);
注意前提条件是我们的程序代码中不要覆盖ActiveXObject,应该没有哪个程序这么做吧。呵呵。
2 判断IE6浏览器
从IE7开始IE是支持XMLHttpRequest对象的,唯独IE6是不支持的。根据这个特性和前面判断IE的函数isIe()我们就知道怎么判断IE6了吧。判断方法如下
function isIe6() {
& &// ie6是不支持window.XMLHttpRequest的
& & return isIe() && !window.XMLHttpR
3 判断IE7浏览器
因为从IE8开始是支持文档模式的,它支持document.documentMode。IE7是不支持的,但是IE7是支持XMLHttpRequest对象的。判断方法如下
function isIe7() {
& &//只有IE8+才支持document.documentMode
& &return isIe() && window.XMLHttpRequest && !document.documentM
4 判断IE8浏览器
在从IE9开始,微软慢慢的靠近标准,我们把IE678称为非标准浏览器,IE9+与其他如chrome,firefox浏览器称为标准浏览器。两者的区别其中有一个是。大家测试下如下代码。返回的是什么
alert(-[1,]);//在IE678中打印的是NaN,但是在标准浏览器打印的是-1
那么我们就可以根据上面的区别来判断是IE8浏览器。方法如下
function isIe8(){
& &// alert(!-[1,])//-&IE678返回NaN 所以!NaN为true 标准浏览器返回-1 所以!-1为false
& return isIe() &&!-[1,]&&document.documentM
5 判断IE9、IE10、IE11浏览器
从IE8浏览器是支持JSON内置对象的,从IE10开始支持js的严格模式,关于JS中的严格模式请参考这篇文章https://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
IE9+下alert(!-[1,])返回的是false,IE9+是支持addEventListener的,但是IE11浏览器中是不支持原来IE中独有的事件绑定attachEvent。根据这些区别我们就能区分出IE9、IE10、IE11浏览器了。
6 &判断其他浏览器
/****来自曾经项目中封装的公共类函数***/
//检测函数
var check = function(r) {
& & & & return r.test(navigator.userAgent.toLowerCase());
var statics = {
& & & & /**
& & & & &* 是否为webkit内核的浏览器
& & & & &*/
& & & & isWebkit : function() {
& & & & & return check(/webkit/);
& & & & },
& & & & /**
& & & & &* 是否为火狐浏览器
& & & & &*/
& & & & isFirefox : function() {
& & & & & return check(/firefox/);
& & & & },
& & & & /**
& & & & &* 是否为谷歌浏览器
& & & & &*/
& & & & isChrome : function() {
& & & & & return !statics.isOpera() && check(/chrome/);
& & & & },
& & & & /**
& & & & &* 是否为Opera浏览器
& & & & &*/
& & & & isOpera : function() {
& & & & & return check(/opr/);
& & & & },
& & & & /**
& & & & &* 检测是否为Safari浏览器
& & & & &*/
& & & & isSafari : function() {
& & & & & // google chrome浏览器中也包含了safari
& & & & & return !statics.isChrome() && !statics.isOpera() && check(/safari/);有关360浏览器对JS的不兼容解决办法
昨天修改了FFB的验证脚本,IE、safari、firefox、chorme、QQ浏览器全数通过,唯独使用360浏览器测试时发生了问题。进一步测试,发现只有在360浏览器的极速模式下才会发生不兼容的状况。
通过查阅360浏览器的官网得知,该浏览器采用两个内核,分别是IE9和基于Webkit的chromium内核。但是分别在IE9和chrome下测试却一切正常,得知结论:只有360浏览器或其他国内浏览器有不兼容的状况。
最后通过阅读360浏览器官方文档http://se.360.cn/v6/help/meta.html,得知通过添加一个&meta&来来选择用户的浏览器内核,排除不兼容现象,代码如下:
content的取值为webkit,ie-comp,ie-stand之一,区分大小写,分别代表用webkit内核,IE兼容内核,IE标准内核。
若页面需默认用极速核,增加标签:&meta name="renderer" content="webkit"&
若页面需默认用ie兼容内核,增加标签:&meta name="renderer" content="ie-comp"&
若页面需默认用ie标准内核,增加标签:&meta name="renderer" content="ie-stand"&
各渲染内核的技术细节
IE9/IE10/IE11(取决于用户的IE)
ActiveX控件支持
人气:6222
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.038 (s). 13 q(s)}

我要回帖

更多关于 angularjs 兼容ie11 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信