【转】使用js触发事件

如果大家将一张网页看成一个form的话,大致上就成了一个web form的模型。在win form 下要想手动触发某一个对象的事件是很简单的,只要发送一条消息即可达成。(PostMessage) 但是网页并不是基于消息机制的,如果我们想在一张网页上写出一个类似于按键精灵的功能该如何实现呢?
为大家介绍js下的几个方法:

1. createEvent(eventType)
参数:eventType 共5种类型:
    Events :包括所有的事件. 
          HTMLEvents:包括 ‘abort‘, ‘blur‘, ‘change‘, ‘error‘, ‘focus‘, ‘load‘, ‘reset‘, ‘resize‘, ‘scroll‘, ‘select‘, 
                                    ‘submit‘, ‘unload‘. 事件
          UIEvents :包括 ‘DOMActivate‘, ‘DOMFocusIn‘, ‘DOMFocusOut‘, ‘keydown‘, ‘keypress‘, ‘keyup‘.
                                  间接包含 MouseEvents. 
          MouseEvents:包括 ‘click‘, ‘mousedown‘, ‘mousemove‘, ‘mouseout‘, ‘mouseover‘, ‘mouseup‘. 
          MutationEvents:包括 ‘DOMAttrModified‘, ‘DOMNodeInserted‘, ‘DOMNodeRemoved‘, 
                                      ‘DOMCharacterDataModified‘, ‘DOMNodeInsertedIntoDocument‘, 
                                      ‘DOMNodeRemovedFromDocument‘, ‘DOMSubtreeModified‘.

2. 在createEvent后必须初始化,为大家介绍5种对应的初始化方法
  HTMLEvents 和 通用 Events:
            initEvent( ‘type‘, bubbles, cancelable )
    UIEvents :
                      initUIEvent( ‘type‘, bubbles, cancelable, windowObject, detail )
    MouseEvents: 
                      initMouseEvent( ‘type‘, bubbles, cancelable, windowObject, detail, screenX, screenY, 
                      clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget )
    MutationEvents :
                      initMutationEvent( ‘type‘, bubbles, cancelable, relatedNode, prevValue, newValue, 
                      attrName, attrChange )

3. 在初始化完成后就可以随时触发需要的事件了,为大家介绍targetObj.dispatchEvent(event)
    使targetObj对象的event事件触发
  需要注意的是在IE 5.5+版本上请用fireEvent方法,还是浏览兼容的考虑

4. 例子
    //例子1  立即触发鼠标被按下事件

    var fireOnThis = document.getElementByIdx_x(‘someID‘);
        var evObj = document.createEvent(‘MouseEvents‘);
        evObj.initMouseEvent( ‘click‘, true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null );
        fireOnThis.dispatchEvent(evObj);

  //例子2  考虑兼容性的一个鼠标移动事件
    var fireOnThis = document.getElementByIdx_x(‘someID‘);
    if( document.createEvent )
    {
        var evObj = document.createEvent(‘MouseEvents‘);
        evObj.initEvent( ‘mousemove‘, true, false );
        fireOnThis.dispatchEvent(evObj);
    }
  else if( document.createEventObject )
  {
      fireOnThis.fireEvent(‘onmousemove‘);
  }
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0">
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
    <title></title>

</head>
<body>

    <div id="a" onclick="alert(1);">321321</div>

    <script type="text/javascript">
        /**
         * 1. createEvent(eventType)
         * 参数: eventType 共5种类型
         * Events : 包含所有的事件
         *         HTMLEvetns : ‘abort‘,‘blur‘,‘change‘,‘error‘,‘focus‘,
         *                     ‘load‘,‘reset‘,‘resize‘,‘scroll‘,‘select‘,
         *                     ‘submit‘,‘unload‘
         *         UIEvents : ‘DOMActivate‘,‘DOMFocusIn‘,‘DOMFocusOut‘,‘keydown‘,‘keypress‘,‘keyup‘
         *         MouseEvents : ‘click‘,‘mousedown‘,‘mousemove‘,‘mouseout‘,‘mouseover‘,‘mouseup‘
         *         MutationEvents : ‘DOMAttrModified‘,‘DOMNodeInserted‘,‘DOMNodeRemoved‘,‘DOMCharacterDataModified‘,
         *                         ‘DOMNodeInsertedIntoDocument‘,‘DOMNodeRemovedFromDocument‘,‘DOMSubtreeModified‘
         */
        /**
         * 2. 在 createEvent 后必须初始化,为大家介绍5种对应的初始化方法
         * HTMLEvents 和 通用 Events
         *         initEvent(‘type‘,bubbles,cancelable)
         * UIEvents
         *         initUIEvent(‘type‘,bubbles,cancelable,windowObject,detail)
         * MouseEvents
         *         initMouseEvent(‘type‘,bubbles,cancelable,windowObject,detail,screenX,screenY,clientX,clientY,ctrlKey,altKey,shiftKey,metaKey,button,relatedTarget)
         * MutationEvents
         *         initMutationEvent(‘type‘,bubbles,cancelable,relatedNode,prevValue,newValue,attrName,attrChange)
         */
        /**
         * 在初始化完成后就可以随时触发需要的事件了,为大家介绍 targetObj.dispatchEvent(event)
         * 使targetObj对象的event事件触发
         * 需要注意的是在IE5.5+版本上请用fireEvent方法,还是浏览器兼容的考虑
         */

        // 立即触发鼠标按下事件
        var fireOnThis = document.getElementById(‘a‘);
        var evObj = document.createEvent(‘MouseEvents‘);
        evObj.initMouseEvent(‘click‘,true,true,window,1,12,345,7,220,false,false,true,false,0,null);
        fireOnThis.dispatchEvent(evObj);
    </script>

</body>
</html>
时间: 2024-08-05 09:15:04

【转】使用js触发事件的相关文章

JS触发事件大全

      事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown IE4.N4 按下鼠标时触发此事件 onmouseup IE4.N4 鼠标按下后松开鼠标时触发此事件 onmouseover IE3.N2 当鼠标移动到某对象范围的上方时触发此事件 onmousemove IE4.N4 鼠标移动时触发此事件 onmouseout IE4.N3 当鼠标离开某对象范围时触发此事件 onke

JS触发事件集锦

事件句柄 HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时启动一段 JavaScript.下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作. 属性 当以下情况发生时,出现此事件 FF N IE onabort 图像加载被中断 1 3 4 onblur 元素失去焦点 1 2 3 onchange 用户改变域的内容 1 2 3 onclick 鼠标点击某个对象 1 2 3 ondblclick 鼠标双击某

转载:JS触发服务器控件的单击事件

原文地址:http://blog.csdn.net/joyhen/article/details/8485321 <script src="../Js/jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $("#a_doClick").cli

JS触发服务器控件的单击事件

<script src="../Js/jquery-1.4.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $("#a_doClick").click(function () { $("#<%=btnTest.ClientID%>&quo

原生js自动触发事件

熟悉jquery的童鞋都知道在jq中有一个方法可以自动触发事件,那就是trigger(),那么通过原生js又怎么模拟触发呢? js中添加一个主动触发事件的方法有dispatch.该方法能模拟用户行为,如点击(click)操作等. 标准使用dispatchEvent方法,IE6/7/8则使用fireEvent方法. dispatchEvent() 方法给节点分派一个合成事件. 语法如下: dispatchEvent(eventObj) eventObj 参数是一个描述事件的 ActionScrip

JS 页面加载触发事件 document.ready和onload的区别

JS 页面加载触发事件 document.ready和onload的区别 document.ready和onload的区别——JavaScript文档加载完成事件 页面加载完成有两种事件: 一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件): 二是onload,指示页面包含图片等文件在内的所有元素都加载完成. 1.Dom Ready 用jQ的人很多人都是这么开始写脚本的: $(function(){       // do something }); 例如: $(functi

html5与js关于input[type=&#39;text&#39;]文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的value点击全选状态onclick=&quot;select();&quot;。做购物车页面时会要用到。

关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的点击全选状态onclick="select();".做购物车页面时会要用到. input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange: 1.onchange事件与onpropertychange事件的区别:onchange事件在内容改变(两次

js触发按钮点击事件

js触发按钮点击事件 博客分类: javascript 模拟JS触发按钮点击功能 Html代码   <html> <head> <title>usually function</title> </head> <script> function load(){ //下面两种方法效果是一样的 document.getElementById("target").onclick(); document.getElement

js 主动触发事件

//主动触发事件:触发鼠标被按下事件 var btn2 =document.getElementById("btn2"); var btn = document.getElementById("btn"); //步骤1:先创建1个事件 var evObj = document.createEvent("MouseEvents"); //步骤2:初始化这个event evObj.initEvent("click",true,tr