Program Tip

프로토 타입으로 이벤트 트리거

programtip 2020. 11. 30. 19:50
반응형

프로토 타입으로 이벤트 트리거


누구든지 jQuery의 트리거 함수로 할 수 있듯이 Prototype에서 이벤트를 트리거하는 방법을 알고 있습니까?

관찰 메서드를 사용하여 이벤트 리스너를 바인딩했지만 프로그래밍 방식으로 이벤트를 발생시킬 수도 있습니다.

미리 감사드립니다


event.simulate.js 귀하의 요구에 맞습니다.

나는 이것을 여러 번 사용했고 그것은 매력처럼 작동합니다. 다음 과 같이 클릭 또는 마우스 오버와 같은 네이티브 이벤트수동으로 트리거 할 수 있습니다 .

$('foo').simulate('click');

이것에 대한 좋은 점은 마치 요소를 직접 클릭 한 것처럼 연결된 모든 이벤트 핸들러가 계속 실행된다는 것입니다.

를 들어 사용자 정의 이벤트 는 표준 프로토 타입 방법을 사용할 수 있습니다 Event.fire().


Prototype에 내장 된 것이 없다고 생각하지만 이것을 사용할 수 있습니다 (테스트되지는 않았지만 최소한 올바른 방향으로 안내해야 함).

Element.prototype.triggerEvent = function(eventName)
{
    if (document.createEvent)
    {
        var evt = document.createEvent('HTMLEvents');
        evt.initEvent(eventName, true, true);

        return this.dispatchEvent(evt);
    }

    if (this.fireEvent)
        return this.fireEvent('on' + eventName);
}

$('foo').triggerEvent('mouseover');

이 게시물이 도움이된다는 것을 알았습니다 ... http://jehiah.cz/archive/firing-javascript-events-properly

Firefox와 IE 모두에서 이벤트를 발생시키는 방법을 다룹니다.

function fireEvent(element,event){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}

여기서 답변은 "일반"이벤트, 즉 사용자 에이전트에 의해 정의 된 이벤트에 해당되지만 사용자 지정 이벤트의 경우 프로토 타입의 "불"메서드를 사용해야합니다. 예 :

$('something').observe('my:custom', function() { alert('Custom'); });
.
.
$('something').fire('my:custom'); // This will cause the alert to display

참고 URL : https://stackoverflow.com/questions/460644/trigger-an-event-with-prototype

반응형