精华内容
下载资源
问答
  • 事件处理程序

    2011-12-06 14:09:26
    Web服务器控件可以包含服务器上调用的事件处理程序,Button控件可以包含Click事件,DropDownList控件则提供了 SelectedIndexChanged事件,TextBox提供lTextChanged事件。 只有进行回送时,才在服务器上触发事件。...

    Web服务器控件可以包含服务器上调用的事件处理程序,Button控件可以包含Click事件,DropDownList控件则提供了

    SelectedIndexChanged事件,TextBox提供lTextChanged事件。

    只有进行回送时,才在服务器上触发事件。文本框中的值改变时,TextChanged事件不会立即触发,只有单击了Submit

    按钮,提交了窗体,并发送给服务器,TextChanged事件才会触发。ASP.NET运行库会验证控件的状态已改变,并调用相应

    的事件处理程序。如果DropDownList的选项改变了,就调用SelectedIndexChanged事件,如果文本框的值改变了,就调用

    TextChanged事件。

    如果希望把Changed事件立即传送给服务器,可以把AutoPostback属性设置为true。这样就会使用客户端的Javascript

    把窗体数据立即提交给服务器。当然,网络通信量也会增加。使用这个功能时要小心。

    用控件的新值验证旧值是由ViewState完成的。ViewState是一个隐藏字段,它会同页面的内容一起发送给浏览器。当把

    页面发送给客户端时,ViewState会包含与窗体中控件相同的值。向服务器回送时,ViewState也会同控件的新值一起发送给

    服务器。这样它就可以验证值是否改变,并调用事件处理程序。

    展开全文
  • 与访问DOM中的event对象不同,要访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法。在使用DOM0级方法添加事件处理程序时,event对象作为window对象一个属性存在。来看下面例子。 var btn = ...

    与访问DOM中的event对象不同,要访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法。在使用DOM0级方法添加事件处理程序时,event对象作为window对象一个属性存在。来看下面例子。

    
    var btn = document.getElementById('myBtn');
    btn.onclick = function() {
        var event = window.event;
        alert(event.type);
    }

    在此,我们通过window.event取得了event对象,并检测了被触发事件的类型(IE中的type属性与DOM中的type属性是相同的),可是,如果事件处理程序是使用attachEvent()添加的,那么就会有一个event对象作为参数被传入事件处理程序函数中,如下所示.

    var btn = document.getElementById('myBtn');
    btn.attachEvent('onclick', function(event){
        alert(event.type); // click
    });
    

    在像这样使用attachEvent()的情况下,也可以通过window对象来访问event对象,就像使用DOM0级方法时一样。不过为方便起见,同一个对象也会作为参数传递。
    如果是通过HTML特性指定的事件处理程序,那么还可以通过一个名叫event的变量来访问event对象(与DOm中事件模型相同)。再看一个例子。

    
    <input type="button" value="Click Me" onclick="alert(event.type)">

    IE的event对象同样也包含与创建它的事件相关的属性和方法。其中很多属性和方法都有对应的或者相关的DOM属性和方法。与DOM的event对象一样,这些属性和方法也会因为事件类型的不同页不同,但所有事件对象都会包含包含下表所列的属性和方法。

    属性/方法 类型 读/写 说明
    cancelBubble Boolean 读/写 默认值为false,但将其设置为true就可以取消事件冒泡(与DOM中的stopPropagation()方法的作用相同)
    returnValue Boolean 读/写 默认值为true,但将其设置为false就可以事件的默认行为(与DOM中的preventDefault()方法的作用相同)
    srcElement Element 只读 事件的目标(与DOm中的target属性相同)
    type String 只读 被触发的事件的类型

    因为事件处理程序的作用域是根据指定它的方式来确定的。所有不能认为this会始终等于事件目标.故而,最好还是使用event.srcElement比较保险.例如:

    var link = document.getElementById('myLink');
    link.onclick=function(){
        window.event.returnValue = false;
    }

    这个例子在onclick事件处理程序中使用returnValue达到的阻止链接默认行为的目的。与DOM不同的是,在此没有办法确定事件是否能被取消。
    相应地,cancelBubble属性与DOM中的stopPropagation()方法的作用相同,都是用来停止事件冒泡的。由于IE不支持事件捕获,因岩浆只能取消事件冒泡;但stopPropagation()可以同时取消事件捕获和冒泡。例如:

    var btn = document.getElementById('mybtn');
    btn.onclick = function() {
        alert('Clicked');
        window.event.cancelBubble = true;
    }
    
    document.body.onclick = function() {
        alert('Body clicked');
    }

    通过在onclick事件处理程序中将cancelBubble设置为true,就可以阻止事件通过冒泡页触发document.body中注册的事件处理程序。结果,在单击按钮后,只会显示一个警告框。

    展开全文
  • 某个元素支持的每种事件,都可以使用一个与相应事件处理程序同名的HTML属性来指定。这个特性的值应该是能够执行的JavasScript代码。例如,要在按钮被单击时执行一些JavasScript,可以像下面这样编写代码:('Clicked'...

    某个元素支持的每种事件,都可以使用一个与相应事件处理程序同名的HTML属性来指定。这个特性的值应该是能够执行的JavasScript代码。例如,要在按钮被单击时执行一些JavasScript,可以像下面这样编写代码:

    <input type="button" value="Click me" onclick="alert('Clicked')" />

    当单击这个按钮时,就会一个警告框。这个操作是通过指定onclick特性并将一些JavaScript代码作为它的值来定义的。由于 这个值是JavasScript,因此不能在其使用转义的HTML语法字符,例如和号(&)、双引号(“”),小于号(<)或大于号(>)。为了避免使用HTML实体,这里使用了号。如果想要使用双引号,那么就要将代码改写成如下所示:

    <input type="button" value="Click me" onclick="alert(&quot;Clicked&quot;)" />

    在HTML中定义的事件处理程序包含要执行的具体动作,也可以调用在页面其他地方定义的脚本,如下面例子所示:

    <script type="text/javascript">
    function showMessage() {
        alert("Hello world");
    }
    </script>
    <input type="button" value="Click me" onclick="showMessage()" />

    在这个例子中,单击按钮就会调用showMessage()函数。这个函数是在一个独立的

    <!-- 输出 "click" -->
    <input type="button" value="Click me" onclick="alert(event.type)" />

    通过event变量,可以直接访问事件对象,你不用自己定义它,也不用从函数的参数列表中读取。在这个函数内部,this值等于事件的目标元素,例如:

    <!-- 输出 "click" -->
    <input type="button" value="Click me" onclick="alert(this.value)" />

    关于这个动态创建的函数,别一个有意思的地方是它扩展作用域的方式。在这个函数内部,可以像访问局部变量一样访问docment及该元素本身的成员。这个函数使用with像下面这样扩展作用域:

    function() {
        with(document) {
            with(this) {
                // 元素属性值
            }
        }
    }

    如此一来,事件处理程序要访问自己的属性就简单多了。下面这行代码与前端的例子效果相同:

    <!-- 输出 "click" -->
    <input type="button" value="Click me" onclick="alert(value)" />

    如果当前元素是一个表彰输入元素,则作用域中还会包含访问表单元素(父元素)的入口,这个函数就变成了如下所示:

    function() {
        with(document) {
            with(this.form) {
                with(this) {
                    // 元素属性值
                }
            }
        }
    }

    实际上,这样扩展作用域的方式,无非就是想让事件处理程序无需引用表单就能访问其他表单字段。例如:

    <form method="post">
        <input type="text" name="username" value=""/>
        <input type="button" value="Echo Username" onclick="alert(username.value)" >
    </form>

    在这个例子中,单击按钮会显示文本框中的文本。值的注意的是,这里直接引用了 username元素。

    不过,在HTML中指定事件处理程序有两缺点.首先,存在一个时差问题。因为用户可能会在HTML元素一出现在页面上就触发相应的事件,但当时的事件处理程序有可能尚不具备执行条件。以前面的例子来说明,假设showMessage()函数是在按钮下方、页面的最底部定义的。如果用户在页面解析showMessage()函数之前就单击了按钮,就会引发 错误。为此,很多HTML事件处理程序会被封装在try-catch块中,以便错误不会浮出水面,如下面的例子所示:

    <input type="button" value="Click me" onclick="try{showMessage();}catch(ex){}" />

    这样,如果在showMessage()函数有定义之前单击了按钮,用户不会看到JavasScript错误,默认因为在浏览器有机会处理错误之前,错误就会被捕获。

    另一个缺点是,这样扩展事件处理程序的作用域链在不同的浏览器中会导致不同结果。不同JavasScript引擎遵循的标识符解析规则略有差异,很可能会访问非限定对象成员时出错。

    通过HTML指定事件处理程序的最后一个缺点是HTML与JavasScript代码紧密耦合。如果要更换事件处理程序,就要改动两个地方:HTML代码和JavasScript代码。而这正是许多开发人员摒弃HTML事件处理程序,转而使用JavasScript指定事件处理程序的原因所在。

    展开全文
  • DOM事件处理程序

    千次阅读 2016-07-27 09:45:08
    响应某个事件的函数就叫做事件处理程序(或事件侦听器)。事件处理程序的名字以“on”开头,因此,click对应的时间处理程序就是 “onclick”。给事件指定事件处理程序有好几种方式。  一:HTML 方式  这种方式是...

       事件就是用户或浏览器自身执行的某种动作。比如“click”,“load”,“mouseover”等都是事件的名字。响应某个事件的函数就叫做事件处理程序(或事件侦听器)。事件处理程序的名字以“on”开头,因此,click对应的时间处理程序就是 “onclick”。给事件指定事件处理程序有好几种方式。

      一:HTML 方式

      这种方式是利用元素的属性,直接添加事件处理程序,像下面给这样:

         

    <input  type= "button" id="btn" value=" click me!" onclick = "alert('clicked')"></input>

    onclick值也可以使事先定义的函数名字,像下面这样:

    <script type="text/javascript">
    	function showMessage(){
           alert("clicked");
       }
    </script>
     <input  type= "button" id="btn" value=" click me!" onclick = "showMessage()"/ >


    这种方式有3个不足: 1 ,存在时差问题,上面第二种方式,如果函数定义在按钮下面,页面底部定义的,如果用户在页面解析shoumessage函数之前单击按钮,就会引发错误。

                                           2,存在兼容性问题,不同的JavaScript引擎遵循的标识符解析规则略有差异。

                                          3,html和JavaScript耦合度太高,如果想要修改事件处理程序,就要同时修改html代码和JavaScript代码。

    基于以上原因,我们通常不使用HTML方式的事件处理程序,而是采用DOM事件处理程序

    二: DOM事件处理程序

        随着js的发展,dom事件处理程序目前分为两个阶段的不同。而因为浏览器的不同,又有不同。最终,目前处理事件处理程序有DOM0级方式,DOM2级方式,和IE处理方式。

      1,DOM0级处理方式:

           DOM0级事件处理方式,首先获得一个元素的引用,因为每个元素都有事件处理程序属性,所以,第二步给元素的事件处理程序属性的值设置为一个函数即可。

     像下面这样:

    <input  type= "button" id="btn" value=" click me!" / >
       <script type="text/javascript">
       	
       	var btn = document.getElementById("btn");
       	btn.onclick = function(){
       		alert("dom0 级事件处理程序");
       	}
       </script>
    也可以删除事件处理程序,只要想下面这样设置
    btn.onclick = null;

    2,DOM2级事件处理程序方式:

    DOM2级为事件处理程序定义了两个方法:addEventLister 和removeEventLister 用于添加和删除事件处理程序。addEventLister|和RemoveEventLister接受三个参数,事件名字,事件处理程序,布尔值(为true代表捕获阶段,false代表冒泡阶段)。事件移除程序也接受三个参数,事件名字,事件处理程序,布尔值,因为事件移除的程序要和添加的一样,所以事件移除的事件处理程序不要使用匿名函数,否则无法移除。可以像下面这样使用DOM2级事件处理程序:

    <script type="text/javascript">
          function showMessage(){
           alert("clicked");
          }
    </script>
       <p> 事件处理程序</p>
       <input  type= "button" id="btn" value=" click me!" / >
       <script type="text/javascript">
       	
       	var btn = document.getElementById("btn");
       	btn.onclick = function(){
       		alert("dom0 级事件处理程序");
       	}
       	btn.onclick = null ;
       	btn.addEventListener("click",showMessage ,false);
       	btn.removeEventListener("click",showMessage,false);
       </script>
    3 ,IE事件处理程序方式:

      IE实现了与DOM2级中类似的两个方法,attachEvent和detachEvent用于添加和移除事件处理程序。这两个方法接受相同的两个参数,因为IE8及以前只支持事件冒泡,所以事件均在冒泡阶段执行。

        ie时间处理程序和dom的事件处理程序还有一点不一样在于:作用域的不同,dom中的作用域是元素本身,而ie则是全局作用域。即处理程序中的this 为window 。

    可以像下面这样使用ie处理程序:

    <script type="text/javascript">
          function showMessage(){
           alert("clicked");
          }
    </script>
       <p> 事件处理程序</p>
       <input  type= "button" id="btn" value=" click me!" / >
       <script type="text/javascript">
       	
       	var btn = document.getElementById("btn");
       	btn.onclick = function(){
       		alert("dom0 级事件处理程序");
       	}
       	btn.onclick = null ;
       	btn.attachEvent("click",showMessage ,false);
       	btn.detachEvent("click",showMessage,false);
       </script>
    目前的时间处理方式就是这些了,最后我们给出个跨浏览器的时间处理程序 addHandler() ,这个方法属于EventUtil的对象,addHandler() 接受三个参数,元素,时间名字,事件处理程序。

         定义和使用见下面:

      EventUtil = {
        addHandler:function(element,type,handler){
        if(element.addEventListener){
        element.addEventListener(type,handler,false);
        } else if( element.attachEvent){
        element.attachEvent("on" + type ,handler);
        } else{
        element["on" + type] = handler ;
        }
        },
        removeHandler:function(element ,type,handler){
        if(element.removeEventListener){
        element.removeEventListener(type,handler,false);
        } else if( element.detachEvent){
        element.detachEvent("on" + type ,handler);
        } else{
        element["on" + type] = null ;
        }
        }
        }
       EventUtil.addHandler(btn,"click",showMessage);

        

    展开全文
  • TypeScript事件处理程序

    千次阅读 2019-08-05 21:21:33
    我对TypeScript和React的介绍性演示引发了关于在React和DOM中键入事件处理程序的热烈讨论。第一个是相当简单的:React中的事件或多或少与您期望的完全相同。然而,TypeScript对DOM事件的古怪实现导致了一个有趣的...
  • javascript事件处理程序

    千次阅读 2015-06-27 13:32:23
    javascript 事件处理程序 1、普通事件处理程序   function showMessage(){ alert("clicked"); } 2、DOMO 级事件处理程序 //老方法 var btn=document.getElementById("myBtn"); //dom扩展方法 支持...
  • 事件就是用户或浏览器自身...开头,因此click 事件的事件处理程序就是onclick,load 事件的事件处理程序就是onload。为事件指定处理程序的方式有好几种。 1)HTML事件处理程序 某个元素支持的每种事件,都可以...
  • javascript事件处理程序的调用

    千次阅读 2018-07-22 12:57:06
    事件处理程序可以是人任意的javascript语句,但是通常使用特定的自定义函数function来对事件进行处理。在使用事件处理程序对页面进行操作时,最主要的是如何通过对象的是事件来指定事件处理程序,指定方式主要有以下...
  • 事件处理程序(一)

    千次阅读 2018-05-08 16:56:56
    什么是事件处理程序当特定的操作发生时,就会发生事件。把事件处理程序关联到事件发生时要处理的代码上,就提供了在事件发生时捕获事件并执行相应代码的方式。就像设置闹钟,当某个事件发生时,触动事件处理程序。二...
  • 在通常情况下,如果要为单个事件注册多个...这是因为在DOM中,为HTML元素的一个事件指定事件处理程序时,这个事件处理程序会成为该元素的一个属性,如果为一个属性赋值,这个属性就会有这个值,可是如果再继续为
  • JS中的事件委托和移除事件处理程序

    千次阅读 2017-11-22 11:35:43
    1.什么是事件委托?...例如,click事件会一直冒泡到documeng层次,也就是说我们可以为整个页面指定一个onclick事件处理程序,而不必给每一个可单击的元素分别添加事件处理程序。如下代码://html <li id="goSom
  • addEventListener添加事件处理程序 我们以前通常使用对象属性来给事件指定处理程序 ,如处理加载事件时,我们将事件处理程序赋给属性window.onload,又例如处理按钮点击事件,我们将事件处理程序赋给按钮的onclick...
  • 相应某个事件的函数叫做事件处理程序(或事件侦听器)。 1、TTML事件处理程序 &lt;script type="text/javascript"&gt; function showMessage() { alert('hello world!'); } &lt;/script...
  • 1.html事件处理程序 ...2.DOM0级事件处理程序件处理程序) 取出id,然后给id.onclick=function(){}...3.DOM2级事件处理程序(可以添加多个事件处理程序) DOM2级定义了两个方法addEventListener()和removeEventListener
  • 注册事件处理程序

    2012-11-01 09:38:39
    1.1.1启用向后兼容的事件处理程序 1)打开sharepoint管理中心 选择服务器 2)打开应用管理程序 3.打开web应用程序常规设置 4.找到向后兼容的事件处理程序,默认为禁用,修改为启用     1.1.2 1.给工程文件加上...
  • 浏览器在事件处理程序上,根据现有及过往浏览器类型,总共有5种形式:查看5种事件处理程序详情 1)HTML事件处理程序 2)DOM0 级事件处理程序 3)DOM2 级事件处理程序 4)IE事件处理程序 5)跨浏览器的事件处理程序 ...
  • 事件是指一些特定的交互瞬间,而事件处理程序是指这些交互的瞬间将要出发的方法(即处理程序),在js中事件(或事件名)有click,mouseover,keydown等它们前面没有on,而事件处理程序(侦听器)则是在事件名前面...
  • 最近学校的数据库实验用MFC+VS2019写小型数据库管理程序,自学MFC,按以下步骤添加菜单跳转窗口时遇到了菜单添加事件处理程序一直是灰的,点不了的问题。 MFC插入MENU菜单栏并点击菜单弹出新窗口 菜单添加事件处理...
  • 事件绑定方法 ... ... 事件处理程序可直接写在属性值当中 ...div class="demo" onclick="console.log(this)">div> // this...这种事件处理程序的作用域很特别,可以像局部变量一样直接访问document及元素本身的成员,示例:
  • 总结JS事件处理程序(5种)

    千次阅读 2018-02-02 15:47:53
    js的事件处理程序有五种类型,分别是: (1)HTML事件处理程序; (2)DOM0级事件处理程序; (3)DOM2级事件处理程序; (4)IE事件处理程序; (5)跨浏览器的事件处理程序; -----------------------------...
  • JS事件处理程序的几种方法

    千次阅读 2017-08-04 19:55:48
    诸如click,load和mouseover,都是事件的名字而响应某个事件的函数就叫做事件处理程序事件处理程序的名字以"on"开头。 1、HTML事件处理程序  首先,这种方法已经过时了。因为动作(js代码)和
  • react 向事件处理程序传递参数

    千次阅读 2018-08-23 19:00:25
    通常我们会为事件处理程序传递额外的参数。例如,若是 id 是一个内联 id,以下两种方式都可以向事件处理程序传递参数: &lt;button onClick={(e) =&gt; this.deleteRow(id, e)}&gt;Delete Row&...
  • 在VC++.Net 2005中(基于对话框的MFC应用程序),如何删除已经添加了的Menu的事件处理程序? 编写程序时,添加了一个菜单(CMenu),并且给其下的某个项添加了事件处理程序(On32774),添加到了CAboutDlg类中,...
  • jquery之jquery事件处理模型(触发事件处理程序)
  • jquery之jquery事件处理模型(删除事件处理程序)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,378
精华内容 16,151
关键字:

事件处理程序