createevent的用法,create 语句

http://www.itjxue.com  2023-01-14 10:12  来源:未知  点击次数: 

原声js怎么触发click事件

如果你只需要触发那些常见的事件,比如说鼠标点击,并且不考虑跨浏览器兼容的问题的话,只需要这样做:

document.getElementById('myLink').click()

当然这么做的兼容性并不好,比如说 FireFox 就不干。另外 onclick() 这样的方法只能用于在 HTML 中的内联写法。

如果事情稍微复杂一些,比如说你要触发一些自定义的事件,那么你必须要理解 DOM 里面的“事件对象模型”,本质上 $.trigger() 就是对这些概念的封装。不过问题是 DOM 的一致性和兼容性一直都不太好,所以关于事件的对象模型长期以来都处于一个比较混乱的状况下,如果不用 jQuery 的话,想找到一个既简单又足够健壮的解决方案并不容易。

很长时间以来,人们都是这样做的:

// 创建一个事件对象,就好像你绑定事件回调函数里获得的那个事件对象一样

var myEvent = document.createEvent('Event')

// 初始化这个事件对象,为它提高需要的“特性”

myEvent.initEvent('myEventName', true, true)

// 按照常见的方式绑定对该事件的监听,这里的 element 可以是任何一个元素,你懂的

element.addEventListener('myEventName', function(evt) {

// 这里,evt 就是你创建的事件对象了,不过它会更丰富一些——这些是浏览器为你做的

})

// 然后这样触发它

element.dispatchEvent(myEvent)

你必须要去阅读 createEvent initEvent dispatchEvent 这些方法的文档来完整认识它们(文档可以去 MDN 找),上面介绍的只是基本用法。$.trigger() 所封装的也就是它们(及其相关的兼容性处理等等)。不过这些方法已经有点“过时”了,特别像 initEvent 这样的方法更是已经被(新的 DOM 标准)废弃了。

以下是更“现代”的做法,不过老样子:兼容性会是问题:

var myEvent = new Event('myEventName')

element.dispatchEvent(myEvent)

绑定回调是一样的我就不重复了。另外“现代”的做法里触发内建事件要用对应的接口,比如说:

var event = new MouseEvent('click', {

'view': window,

'bubbles': true,

'cancelable': true

});

有没有一种方法来模拟在Windows触摸事件8

!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" ""

html xmlns=""

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8" /

title触摸屏自动触发事件/title

style.div{

height:100px; width:100px; background:#0FF; border: double 2px #996666;

}

/style

/head

body

div class='div' id='bot'移动端模拟触发事件/div

button onclick="zidongchufashijian (bot)"移动端模拟触发事件/button

script

var bot = document.getElementById('bot');

bot.addEventListener('touchstart', function () { bot.innerHTML="手指点击"},false); //添加触摸事件

//-------------------自动触发事件开始-------------------------

function zidongchufashijian (el) {

var Event = document.createEvent('Event');//定义和用法createEvent() 方法创建新的 Event 对象。

Event.initEvent('touchstart', true, true); //initEvent()初始化新事件对象的属性

el.dispatchEvent(Event); //dispatchEvent() 方法给节点发送一个事件。

}

//-----------------自动触发事件结束--------------------------

bot.addEventListener("touchend",function () { bot.innerHTML="手指离开";},false);

bot.addEventListener("touchmove",function () { bot.innerHTML="手指滑动";

},false);

/script

/body

/html

vc++中,关于WaitForSingleObject和CreateEvent的用法

ExitHandle是一个标志事件,你可以把它理解为一个BOOL类型的变量

WaitForSingleObject是在指定的时间内等待这个事件发生,如果发生,返回值就是WAIT_OBJECT_0,你可以理解为在指定的时间内判断ExitHandle是否为真.

虽然效果上和BOOL变量类似,但实际上工作原理复杂的多,这涉及到WINDOWS的线程切换及线程同步等相关知识,有兴趣你可以仔细看下相关资料.

求C++高手

CreateEventA CreateEventW是一样的 只是一个对应Ansi字符一个对应Wide字符 不知用那个好就CreateEvent好了(编译器会自动选择A W)

另外这个和C++没关系 是WIN的API

事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。

产生事件对象的函数如下:

HANDLE CreateEvent(

LPSECURITY_ATTRIBUTES lpEventAttributes, // SD

BOOL bManualReset, // reset type

BOOL bInitialState, // initial state

LPCTSTR lpName // object name

);

该函数创建一个Event同步对象,如果CreateEvent调用成功的话,会返回新生成的对象的句柄,否则返回NULL。

参数说明:

lpEventAttributes 一般为NULL

bManualReset 创建的Event是自动复位还是人工复位.如果true,人工复位, 一旦该Event被设置为有信号,则它一直会等到ResetEvent()API被调用时才会恢复 为无信号. 如果为false,Event被设置为有信号,则当有一个wait到它的Thread时, 该Event就会自动复位,变成无信号. 如果想在每次调用WaitForSingleObject 后让WINDOWS为您自动地把事件地状态恢复为”无信号”状态,必须把该参数设为FALSE,否则,您必须每次调用ResetEvent函数来清除事件的信号。

bInitialState 初始状态,true,有信号,false无信号

lpName 事件对象的名称。您在OpenEvent函数中可能使用。

注释:

一个Event被创建以后,可以用OpenEvent()API来获得它的Handle,用CloseHandle() 来关闭它,用SetEvent()或PulseEvent()来设置它使其有信号,用ResetEvent() 来使其无信号,用WaitForSingleObject()或WaitForMultipleObjects()来等待其变为有信号.

PulseEvent()是一个比较有意思的使用方法,正如这个API的名字,它使一个Event 对象的状态发生一次脉冲变化,从无信号变成有信号再变成无信号,而整个操作是原子的.

对自动复位的Event对象,它仅释放第一个等到该事件的thread(如果有),而对于人工复位的Event对象,它释放所有等待的thread.

这里有两个API函数用来修改事件对象的信号状态:SetEvent和ResetEvent。前者把事件对象设为”有信号”状态,而后者正好相反。

在事件对象生成后,必须调用WaitForSingleObject来让线程进入等待状态,该函数的语法如下:

WaitForSingleObject proto hObject:DWORD, dwTimeout:DWORD

hObject --指向同步对象的指针。事件对象其实是同步对象的一种。

dwTimeout -- 等待同步对象变成”有信号”前等待的时间,以毫秒计。当等待的时间超过该值后无信号同步对象仍处于”无信号”状态,线程不再等待,WaitForSingleObject函数会返回。如果想要线程一直等待,请把该参数设为INFINITE(该值等于0xffffffff)。

(责任编辑:IT教学网)

更多

推荐Javascript/Ajax文章