Andrey Godyaev
Andrey Godyaev

Reputation: 913

Fire scroll event on any scrollTop assignment

In my code i assign an integer value to myHTMLScrollBarEl.scrollTop property and expect scroll event to fire. However when the value is equal to the existing one nothing happens.

How can i force scroll event to fire every time?

Upvotes: 1

Views: 1439

Answers (2)

jneuendorf
jneuendorf

Reputation: 442

Using document.createEvent plus event.initEvent as described in the other answer is deprecated as stated here.

As of this page the preferred way to create and fire an event instance is now

var scrollEvent = new Event('scroll', {
    bubbles: true,
    cancelable: false,
    composed: false,
});
myHTMLScrollBarEl.dispatchEvent(scrollEvent)

Upvotes: 0

Ali Sheikhpour
Ali Sheikhpour

Reputation: 11045

To trigger scroll event use $(window).scroll(); after your codes. Setting scroll position using the code does not triggers the scroll event itself.

for triggering scroll event using pure Javascript (reference):

function triggerEvent(el, type){
   if ('createEvent' in document) {
        // modern browsers, IE9+
        var e = document.createEvent('HTMLEvents');
        e.initEvent(type, false, true);
        el.dispatchEvent(e);
    } else {
        // IE 8
        var e = document.createEventObject();
        e.eventType = type;
        el.fireEvent('on'+e.eventType, e);
    }
}

//An finally fire it
triggerEvent(window, 'scroll');

Upvotes: 2

Related Questions