js事件

<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>如何获取事件触发源(兼容IE和FireFox)</title>
    <script src="jquery-1.4.4.js" type="text/javascript"></script>
    <script type="text/javascript">
        function ClickMe(e) {
            var src = e.target || window.event.srcElement;
            alert(src.value);
            alert(src.innerHTML);
        }
        function ClickMe2() {
            var e = arguments[0] || window.event;
            var src = e.srcElement || e.target; // src 就是事件的触发源
            alert(src.value);
        }
        function test(event) {
            var e = event || window.event;
            if (e.keyCode == 13) {
                alert("捕捉住回车提交事件!");
            }
        }
    </script>
</head>
<body>
    <button onclick="ClickMe(event)"> 测试</button>
    <input type="text" name="t" onkeydown="test(event);"/>
    <button onclick="ClickMe2(event)">测试2</button><br />
    <textarea rows="20" cols="50">
        document.onclick = onClick;
        function onClick(ev) {
            ev = ev || window.event; // 事件     
            var target = ev.target || ev.srcElement; // 获得事件源 
            /* 
            target.getAttribute()是获取该事件源对像里面的一些属性。
            比如对像中有(name,id,type等等);
            */
            var dragObj = target.getAttribute('type');
            alert(dragObj);
        }
    </textarea>
</body>
</html>

  这段代码在ie浏览器下 在文本框按下回车键 会触发button的事件(即事件冒泡)但是实际上他确实要写上阻止默认行为。难道默认行为也是事件冒泡或者说默认行为是事件冒泡的一种?而这里直接写return flase 都无效.不明白为什么?邪恶的ie

代码:

js 阻止默认行为

            if (e && e.preventDefault)
                e.preventDefault();
            //IE中阻止函数器默认动作的方式
            else
                window.event.returnValue = false;
            return false;

阻止事件冒泡:

            //如果提供了事件对象,则这是一个非IE浏览器
            if (e && e.stopPropagation)
            //因此它支持W3C的stopPropagation()方法
                e.stopPropagation();
            else
            //否则,我们需要使用IE的方式来取消事件冒泡
                window.event.cancelBubble = true;

jq:stopPropagation,preventDefault;

结果在ie下e.stopPropagation();提示没有这个方法或者属性!难道jq的e事件对象信息 

function test(e) {
e.stopPropagation();
        }在html
 <input type="text" name="t" onkeydown="test(e);"/>这样写无效!一定要$("xxx").click(function(e){.....}); 或者用bind 事件绑定才可以。。。。

 

 

 

posted @ 2013-02-16 17:55  s_p  阅读(274)  评论(0编辑  收藏  举报