`
yuanlanxiaup
  • 浏览: 898971 次
文章分类
社区版块
存档分类
最新评论

IE7中onpropertychange引发的Stack overflow at line xxx问题解决

 
阅读更多

与之相关的链接:

http://blog.csdn.net/lgg201/archive/2010/05/28/5630392.aspx

http://blog.csdn.net/lgg201/archive/2010/05/28/5629526.aspx

对字符串扩展, 并使用了上面代码做了input的长度限制之后, 运行一直良好, 直到今天测试提到IE7下输入框键一直按下输入导致的Stack overflow at line xxx的错误...

本来以为是自己些的截取字符串方法造成的溢出, 结果不是, 不过所幸找到一个原来字符串截取的bug, 以下是修正后的汉字截取

万般无奈, 看到IE7响应的是propertychange事件, 就在该事件中增加了alert, 发现的问题是, 输入或点击等操作, 只要稍微碰触到该元素, 就会导致多次alert, 我们知道, 其实alert是modal的, 也就是它弹出来之后, 我们对浏览器是无法操作的, 因此, 就猜测propertychange在IE7是异步响应的, 因此, 在propertychange事件的处理中把多余的调用屏蔽了(propertychange对我来说, 不需要那么频繁的响应, 一个输入动作一次足以), 如下:

增加一个全局的同步信号, 如果正在处理, 就直接返回.....

果然, 问题解决了......

依然疑惑的是IE7中, propertychange事件的响应究竟是因为异步还是因为bug导致一个动作引发多次响应.

分享到:
评论

相关推荐

    JavaScript的onpropertychange事件

    JavaScript的`onpropertychange`事件是JavaScript中处理对象属性改变时触发的一种事件。这个事件主要在Internet Explorer浏览器中被广泛使用,因为它是IE特有的,而在其他遵循W3C标准的浏览器(如Firefox、Chrome、...

    oninput,onpropertychange,onchange的用法和区别

    但是,onpropertychange 事件也存在一些问题,在 IE 浏览器中,它存在一个 bug,即在用户输入第一个字符时,onpropertychange 事件不会被触发。 最后,让我们来了解 oninput 事件。oninput 事件是 onpropertychange...

    javascript开发中使用onpropertychange,oninput事件解决onchange事件的不足

    这样一来问题就解决了. 那其他浏览器呢,onpropertychange可是IE的专利. 接下来就是oninput事件了. 但是oninput有个诡异,必须用addEventListener的方式来绑定事件.否则无效. 好了, 以下是演示例子, 主流浏览器都没...

    兼容Firefox和IE的onpropertychange事件oninput

    在IE中使用`onpropertychange`,在非IE浏览器(如Firefox)中使用`oninput`。以下是一个示例: ```javascript function handle() { var msgElement = document.getElementById('msg'); msgElement.innerHTML = '...

    js监听输入框值的即时变化onpropertychange、oninput.docx

    例如,在IE下,可以使用onpropertychange 事件,而在其他浏览器中,需要使用oninput 事件。为了解决这个问题,我们可以使用以下代码来判断浏览器的类型: ```javascript if ("\v" == "v") { alert("IE"); } else {...

    onchange和onpropertychange

    然而,对于那些需要在IE浏览器中监控所有属性变化的场景,onpropertychange可能是唯一的选择。随着现代浏览器的普及,onpropertychange的使用已经越来越少,开发者应当转向使用更稳定的事件处理机制,如...

    js onpropertychange输入框 事件获取属性

    当一个HTML元素的属性改变的时候,都能通过onpropertychange来捕获。例如< input name=”text1″ ... 但onpropertychange只有IE支持,FireFox下的怎么解决呢?firefox的事件oninput,效果和IE的onproperchange相同。

    js中的onchange和onpropertychange (onchange无效的解决方法)

    本文将详细讲解这两个事件的区别以及如何解决 `onchange` 事件在某些情况下的无效问题。 `onchange` 事件是JavaScript中用于监听表单元素(如输入框、选择框等)或某些可触发改变状态的元素(如复选框)在用户进行...

    JS中onpropertychange和onchange事件区别小结

    onpropertychange和onchange都不管文本框中的实际值有没有变,只要有改的相应操作就可能触发。有时当上面两时间都不能满足需求时,可以考虑只用onblur。 还有一点要注意到,当onblur和onchange事件一起用时,onblur...

    jquery下onpropertychange事件的绑定方法

    为了解决这个问题,引入了onpropertychange事件,它能够监听到元素属性的任何变化,包括由JavaScript引起的值变化。在早期的IE浏览器中,onpropertychange事件被广泛支持,其他浏览器则后来也逐渐支持,但表现可能...

    js监听表单value的修改同步问题,跨浏览器支持.docx

    在IE浏览器中,这个问题可以通过`onpropertychange`事件来解决,但在Firefox和其他非IE浏览器中,需要采用不同的策略。 首先,开发者尝试使用`onchange`事件,但发现这个事件只有在文本框失去焦点时才会触发,无法...

    js与jquery实时监听输入框值的oninput与onpropertychange方法

    主要介绍了js与jquery实时监听输入框值的oninput与onpropertychange方法,实例分析了oninput与onpropertychange实现下拉框里自动匹配关键字实时监听文本框value值变化的功能,需要的朋友可以参考下

    js与jquery实时监听输入框值的oninput与onpropertychange方法.docx

    在这个资源中,我们将介绍 JS 与 jQuery 实时监听输入框值的 oninput 与 onpropertychange 方法,并通过实例分析了 oninput 与 onpropertychange 实现下拉框里自动匹配关键字实时监听文本框 value 值变化的功能。...

    placeholder.js

    简洁的placeholder插件,支持ie9、ie8及以下版本。完美解决ie9中onpropertychange问题。使用简单,引入placeholder.js即可让您的ie完美支持placeholder

    placeholder

    简洁的placeholder插件,支持ie9、ie8及以下版本。完美解决ie9中onpropertychange问题。使用简单,引入placeholder.js即可让您的ie完美支持placeholder

    asp.net关于onpropertychange和oninput事件实现代码

    根据这个思路,首先需要解决的无非是确定文本框的什么事件可以满足要求,当时第一个想到的是onkeydown或者onkeypress,在试的过程中发现再输入中文时,无法响应,因为输入方会将焦点给屏蔽了。在网上寻觅了一会发现...

    Delphi程序中应用IE浏览器控件

    1. **兼容性问题**:确保您的系统中安装了兼容的IE版本。如果使用的是较新版本的Delphi,则可能需要额外的步骤来支持更现代的IE版本。 2. **安全性考虑**:由于IE浏览器控件可能存在安全漏洞,请确保仅在受信任的...

Global site tag (gtag.js) - Google Analytics