- 浏览: 662457 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lizaochengwen:
网络请求碰到的中文乱码使用encodeURL吧- (NSStr ...
iPhone开发/iPad开发 中文乱码问题 -
hhb19900618:
还是没弄懂怎么解决了中文乱码? 正确代码能重写贴出吗
iPhone开发/iPad开发 中文乱码问题 -
zhengjj_2009:
我的理解是讲ipa文件解压缩之后再重新打包,已经破坏了签名,所 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
zhengjj_2009:
我参考你的“ 从ipa格式的母包生成其它渠道包的shell脚本 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
同一片天空:
问题果然解决了
iOS 搭建 XMPP实现环境
绑定事件
另一个实现
绑定onpropertychange事件
onpropertychange是微软 制造的一个事件,它在一个元素的属性发生变化的时候触发,常见的有文本的长度改变,样长改变等,FF大致和它相似的属性为oninput事件,不过它只针对textfield与textarea的value属性。safari,firefox,chrome与 opera都支持此属性。
复制代码
移除事件
加载事件
阻止事件
如果仅仅是阻止事件冒泡
取得事件源对象
相当于Prototype.js框架的Event.element(e)
或者这个功能更强大,我在开发datagrid时开发出来的,详细用法见《一步步教你实现表格排序(第二部分)》。
--------------------------------------------------------------------------------------------------
阻止冒泡事件的方法有两种,第一种是IE的方法,第二种是DOM方法,至于为什么要分为两种方法去讨论之,这里就不做讨论了,总之是浏览器一些蹩脚的问题,好了废话不说了,直接贴代码了
//阻止冒泡事件
复制代码
复制代码
举个例子:就是谷歌首页的更多选项吧,不知道的可以去看看http://www.google.com/
这里要应用两个点击事件,一个是div.onclick,另一个就是document.onclick,那么问题就出现了,在调用div.onclick的时候,由于冒泡事件的存在,会自动的调用document.onclick,由于冒泡的顺序是从里向外的(div->body->document->html)所以div.onclick事件就会被覆盖掉,也就不会执行了,解决的方案其实也是很简单的哦,就是在执行div.onclick的时候阻止冒泡事件就好了,那怎么阻止呢,就调用上面的函数就ok了!哈哈!
ps:在介绍一下阻止浏览器默认行为的方法,大同小异,这里就不再赘述了
复制代码
复制代码
stopBubble(e);加入这个是防止事件冒泡,执行body的click事件。要传个event过来
【收藏一个兼容多浏览器的阻止事件冒泡的函数】
Javascript中的冒泡阻止,jquery举例
通过返回false来取消默认的行为并阻止事件起泡。
jQuery 代码:
描述:
通过使用 preventDefault() 方法只取消默认的行为。
jQuery 代码:
描述:
通过使用 stopPropagation() 方法只阻止一个事件起泡。
jQuery 代码:
----------------------------------------------------
就是说用Div框住flash Div的鼠标事件不传递给Body
文中说的方法记录一下
/*---------------------------
功能:停止事件冒泡
---------------------------*/
使用方法
//监视用户何时把鼠标移到元素上,
//为该元素添加红色边框
var addEvent = function( obj, type, fn ) { if (obj.addEventListener) obj.addEventListener( type, fn, false ); else if (obj.attachEvent) { obj["e"+type+fn] = fn; obj.attachEvent( "on"+type, function() { obj["e"+type+fn](); } ); } };
另一个实现
var addEvent = (function () { if (document.addEventListener) { return function (el, type, fn) { el.addEventListener(type, fn, false); }; } else { return function (el, type, fn) { el.attachEvent('on' + type, function () { return fn.call(el, window.event); }); } } })();
绑定onpropertychange事件
onpropertychange是微软 制造的一个事件,它在一个元素的属性发生变化的时候触发,常见的有文本的长度改变,样长改变等,FF大致和它相似的属性为oninput事件,不过它只针对textfield与textarea的value属性。safari,firefox,chrome与 opera都支持此属性。
var addPropertyChangeEvent = function (obj,fn) { if(window.ActiveXObject){ obj.onpropertychange = fn; }else{ obj.addEventListener("input",fn,false); } }
复制代码
移除事件
var removeEvent = function( obj, type, fn ) { if (obj.removeEventListener) obj.removeEventListener( type, fn, false ); else if (obj.detachEvent) { obj.detachEvent( "on"+type, obj["e"+type+fn] ); obj["e"+type+fn] = null; } };
加载事件
var loadEvent = function(fn) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = fn; }else { window.onload = function() { oldonload(); fn(); } } }
阻止事件
var stopEvent = function(e){ e = e || window.event; if(e.preventDefault) { e.preventDefault(); e.stopPropagation(); }else{ e.returnValue = false; e.cancelBubble = true; } },
如果仅仅是阻止事件冒泡
var stopPropagation = function(e) { e = e || window.event; if (!+"\v1") { e.cancelBubble = true; } else { e.stopPropagation(); } }
取得事件源对象
相当于Prototype.js框架的Event.element(e)
var getEvent = function(e){ e = e || window.event; var target = event.srcElement ? event.srcElement : event.target; return target }
或者这个功能更强大,我在开发datagrid时开发出来的,详细用法见《一步步教你实现表格排序(第二部分)》。
var getEvent = function(e) { var e = e || window.event; if (!e) { var c = this.getEvent.caller; while (c) { e = c.arguments[0]; if (e && (Event == e.constructor || MouseEvent == e.constructor)) { break; } c = c.caller; } } var target = e.srcElement ? e.srcElement : e.target, currentN = target.nodeName.toLowerCase(), parentN = target.parentNode.nodeName.toLowerCase(), grandN = target.parentNode.parentNode.nodeName.toLowerCase(); return [e,target,currentN,parentN,grandN]; }
--------------------------------------------------------------------------------------------------
阻止冒泡事件的方法有两种,第一种是IE的方法,第二种是DOM方法,至于为什么要分为两种方法去讨论之,这里就不做讨论了,总之是浏览器一些蹩脚的问题,好了废话不说了,直接贴代码了
//阻止冒泡事件
复制代码
1 function stopBubble(e){ 2 if(e&&e.stopPropagation){//非IE 3 e.stopPropagation(); 4 } 5 else{//IE 6 window.event.cancelBubble=true; 7 } 8 }
复制代码
举个例子:就是谷歌首页的更多选项吧,不知道的可以去看看http://www.google.com/
这里要应用两个点击事件,一个是div.onclick,另一个就是document.onclick,那么问题就出现了,在调用div.onclick的时候,由于冒泡事件的存在,会自动的调用document.onclick,由于冒泡的顺序是从里向外的(div->body->document->html)所以div.onclick事件就会被覆盖掉,也就不会执行了,解决的方案其实也是很简单的哦,就是在执行div.onclick的时候阻止冒泡事件就好了,那怎么阻止呢,就调用上面的函数就ok了!哈哈!
ps:在介绍一下阻止浏览器默认行为的方法,大同小异,这里就不再赘述了
复制代码
1 function stopDefault( e ) { 2 //阻止默认浏览器动作(W3C) 3 if ( e && e.preventDefault ) 4 e.preventDefault(); 5 //IE中阻止函数器默认动作的方式 6 else 7 window.event.returnValue = false; 8 return false; 9 }
复制代码
<div onclick="divClick(event)">点击我</div> <script> function divClick(e){ alert("点击了DIV"); e=e|| window.event; stopBubble(e); } document.body.onclick=function(){ alert("我是Body的Click事件"); } function stopBubble(e) { //如果传入了事件对象.那么就是非IE浏览器 if (e && e.stopPropagation) { //因此它支持W3C的stopPropation()方法 e.stopPropagation(); } else { //否则,我们得使用IE的方式来取消事件冒泡 window.event.cancelBubble = true; } } </script>
stopBubble(e);加入这个是防止事件冒泡,执行body的click事件。要传个event过来
【收藏一个兼容多浏览器的阻止事件冒泡的函数】
function stopBubble(e){ //如果传入了事件对象.那么就是非IE浏览器 if(e && e.stopPropagation){ //因此它支持W3C的stopPropation()方法 e.stopPropagation(); } else { //否则,我们得使用IE的方式来取消事件冒泡 window.event.cancelBubble = true; } }
Javascript中的冒泡阻止,jquery举例
通过返回false来取消默认的行为并阻止事件起泡。
jQuery 代码:
$("form").bind("submit", function() { return false; })
描述:
通过使用 preventDefault() 方法只取消默认的行为。
jQuery 代码:
$("form").bind("submit", function(event){ event.preventDefault(); });
描述:
通过使用 stopPropagation() 方法只阻止一个事件起泡。
jQuery 代码:
$("form").bind("submit", function(event){ event.stopPropagation(); });
----------------------------------------------------
就是说用Div框住flash Div的鼠标事件不传递给Body
文中说的方法记录一下
/*---------------------------
功能:停止事件冒泡
---------------------------*/
function stopBubble(e) { //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation ) //因此它支持W3C的stopPropagation()方法 e.stopPropagation(); else //否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble = true; } //阻止浏览器的默认行为 function stopDefault( e ) { //阻止默认浏览器动作(W3C) if ( e && e.preventDefault ) e.preventDefault(); //IE中阻止函数器默认动作的方式 else window.event.returnValue = false; return false; }
使用方法
//监视用户何时把鼠标移到元素上,
//为该元素添加红色边框
unionDom[i].onmouseover = function(e) { this.style.border = "1px solid red"; stopBubble( e ); }; //监视用户何时把鼠标移出元素, //删除我们所添加的红色边框 unionDom[i].onmouseout = function(e) { this.style.border = "0px"; stopBubble( e ); }; uniconDom[i]是页面的一个html标记
发表评论
-
javascript深入理解js闭包
2012-03-02 11:21 1070一、变量的作用域 要理解闭包,首先必须理解Javascri ... -
[收藏]javascript keycode大全
2012-02-27 14:14 701keycode 8 = BackSpace BackSp ... -
jquery实现浮动面板 监听页面滚动和大小变化事件
2012-01-31 09:08 4356(function showQQPanel(){ ... -
js与jquery获得页面大小、滚动条位置、元素位置
2012-01-31 09:07 1598//页面位置及窗口大小 function GetPageSi ... -
使用jQuery Mobile开发Web App-页面切换动画 android
2012-01-14 00:48 3128jQuery Mobile包含一组基于CSS3的过渡动画(又称 ... -
HTML5 Canvas 如何取消反锯齿绘图
2012-01-09 23:28 1517HTML5 Canvas 如何取消反锯齿绘图(HTML5 Ca ... -
15 个 HTML5 Canvas 应用欣赏
2012-01-06 13:39 1755HTML5呈现了很多的新特性,这在之前的HTML中是不可见到的 ... -
js浮点数据类型的计算
2012-01-05 23:27 1731JS浮点数据类型的计算,如下实例: //说明:jav ... -
jquery同一元素支持单双击事件
2012-01-05 00:40 2501发表于 2011 年 01 月 20 ... -
meta viewport标签的使用说明(手机浏览缩放控制)
2011-12-31 14:09 1195引用点评:网页手机wap2.0网页的head里加入下面这条元标 ... -
JS 判断浏览器客户端类型(ipad,iphone,android)
2011-12-29 10:15 3986<script type="text/ ... -
jquery ajax方法如load,get等 在CHROME下失效的问题(已经解决
2011-12-28 23:08 1342最近碰到一个问题。jquery在chrome 5.0+ 的版本 ... -
jquery读取xml比较js读取xml 比比就知道
2011-12-28 22:30 4382test.xml: <?xml version=&qu ... -
querySelector 和 querySelectorAll 方法浏览器实现无误,避免将其与 JQuery 的选择器混淆
2011-12-27 23:20 945规范定义 querySelector 和 querySele ... -
js 监听事件,ie 火狐 javascript addEventListener attachEvent
2011-12-27 23:17 1859<head> <script type=' ... -
js中prototype用法
2011-12-27 12:00 538prototype 是在 IE 4 及其以后版本引入的一个针对 ... -
js读取xml
2011-12-26 17:43 695这次准备使用JS来读取XML做一个例子来熟悉下,一共使用了一下 ... -
javascript模块模式深度探索
2011-12-26 17:35 688前言 模块模式是基于js ... -
DOMContentLoaded事件
2011-12-26 17:30 927今天查看百度空间源代码,发现多了个util.js文件,打开看看 ... -
JS- 操作 XML(兼容IE/FF/Chrome,Safari)
2011-12-26 17:26 5487今天同事有需要JS显示XML! 后来就做了一个效果!或许以后能 ...
相关推荐
本文将详细讲解JavaScript处理事件绑定的一些兼容性写法,适用于不同的浏览器环境。 首先,让我们看一个基本的事件绑定函数的实现。这个函数`addEvent`接受三个参数:目标对象`obj`,事件类型`type`,以及事件处理...
javascript 编写跨浏览器的javascript兼容写法 js兼容
### 事件高级用法及兼容写法 #### 一、事件基础 1. **事件函数** ```javascript obj.on-事件名 = fn; ``` 定义事件时,事件函数并不会立即执行,只有当触发相应事件时才会执行。 2. **事件对象** 当...
JavaScript 事件机制详细研究 ...JavaScript 事件机制是非常复杂的,它需要了解事件机制的实现方式、原理和浏览器的兼容性问题。只有深入了解这些知识点,才能编写出高效、可靠的 JavaScript 代码。
这篇博客文章“IE、FF的JS兼容写法”探讨了如何编写能够同时在IE和FF下运行的兼容性JavaScript代码。 首先,我们需要理解这两个浏览器对于DOM(Document Object Model)操作的处理方式有所不同。例如,IE使用的是`...
JavaScript应用实例-兼容安卓6、7的写法.js
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍_.docx
总的来说,JS软键盘的实现涉及了JavaScript基础、DOM操作、事件处理、CSS样式和浏览器兼容性等多个方面。通过深入理解这些技术并结合具体应用场景,我们可以创建出满足各种需求的JS软键盘,提供流畅且安全的在线输入...
总结来说,JavaScript中的事件兼容性主要包括键盘事件的`keyCode`获取、窗口大小的计算以及DOM事件处理程序的绑定和解绑。通过以上的方法,开发者可以编写出能够在多种浏览器环境下稳定工作的代码,降低因浏览器差异...
不过,由于不同的浏览器对于selection对象的实现方式并不完全一致,因此在跨浏览器使用时,开发者往往需要采用兼容性写法来确保代码的正常工作。 为了实现这一功能,开发者需要编写能够根据不同浏览器环境自动选择...
跨浏览器兼容写法建议使用`document.querySelectorAll`或`document.querySelectorAll`方法,因为这两个方法在现代浏览器中得到了良好支持。 在IE 6及更早版本中,`obj.getAttribute`可以用来访问元素的固有属性和...
在JavaScript中,点击事件是网页交互中的重要...选择哪种方法取决于项目需求,比如是否需要兼容旧版浏览器,或者是否需要更复杂的事件处理逻辑。理解这些基本概念和用法,将有助于创建更加互动和响应式的Web应用程序。
由于不同浏览器对事件监听的实现有所不同,这就需要我们编写兼容不同浏览器的事件处理代码。接下来,我们将详细解析有关事件添加和移除的兼容写法,并通过代码示例加以说明。 首先,事件添加的兼容写法通常涉及以下...
总之,获取CSS样式时的兼容性问题需要开发者对不同浏览器的特点有深入理解,并采取相应的技术手段进行处理。通过使用正确的JavaScript方法和充分考虑CSS前缀,可以确保我们的样式在各种环境下都能正确显示。
本文主要针对JavaScript在IE和Firefox两种浏览器下的兼容性问题进行了分析,并总结了七个关键差异的兼容写法。 1. CSS “float”值的访问差异 在JavaScript中,我们可以使用“object.style.property”句法来访问和...
- **解决方法**:在 MF 中,事件对象可以通过事件处理函数的第一个参数获得,而不能通过 `window.event` 获取。例如,在 IE 中通常这样写:`function myFunction(event) { event = event || window.event; }`。 ###...
以下是关于IE和Firefox下JavaScript兼容写法的一些关键点: 1. **ID属性与Name属性**:在IE中,`<input>`标签的ID属性默认与Name属性相同,因此可以不显式声明ID就能通过`getElementById`找到元素。然而,Firefox...
为了实现JavaScript代码在Internet Explorer(IE)和Mozilla Firefox(FF)两大浏览器中的兼容性,开发者们需要了解两种浏览器在DOM操作、事件处理、CSS属性以及JavaScript对象和属性上的差异性。以下是一些关键知识...
本文将探讨一些JavaScript中处理浏览器兼容问题的常见策略。 首先,我们来看如何获取浏览器窗口的大小。在现代浏览器如IE9+、Chrome、Firefox、Opera和Safari中,可以使用`window.innerHeight`和`window.innerWidth...