2012-06-07 4 views
2

Я знаю, что есть много вопросов, подобных моим, но я не думаю, что это дубликат.Пользовательское событие в javascript

Я хочу создать собственное событие, например, onresize или onshake.

И я хотел бы сделать библиотеку, то пользователь моей библиотеки просто написать, что:

<script src="theLib.js" ></script> 
<script> 
window.addEventListener("shake",myFunc,false); 
</script> 

Я видел много tutoriels и вопросов на StackOverflow, но они либо с помощью JQuery (я хочу самый простой пример для создания пользовательского события), или пользователь не должен просто писать window.addEventListener.

Не могли бы вы объяснить мне самый простой способ добавления специального мероприятия?

+0

Любопытство или реальная необходимость? Почему вы не хотите использовать jQuery? – gdoron

+0

В этой статье есть статья MDN ('document.createEvent') https://developer.mozilla.org/en/DOM/document.createEvent – Saebekassebil

+0

возможный дубликат [Увольнение и сбор пользовательских событий] (http: // stackoverflow .com/questions/7057223/firing-and-capture-custom-events) –

ответ

2

Я нашел ответ наконец:

//Library part 
var evt=document.createEvent("Event"); 
evt.initEvent("foo",true,true); 
function blah() 
{ 
    window.dispatchEvent(evt); 
} 
window.addEventListener("load",blah,false); 

//User part 
window.addEventListener("foo",function(){alert("Hi");},false); 
1

Вы хотите каким-то образом инициировать событие. Этот ответ дает особенно хорошую глубину: How to trigger event in JavaScript?

Возможно, вам придется использовать document вместо window.

+0

И после этого кода, как мы добавляем прослушиватель событий? – user1365010

+0

Из того, что я понимаю, с помощью метода initEvent вы создаете событие, которое может быть запущено на любом элементе - документе, окне, текстовом поле, что угодно. Таким образом, вы просто используете 'addEventListener' на любом объекте, который запускает это событие. – Will

+0

И где я пишу тесты (например, тестирование, если iphone встряхнул или нет) – user1365010