|
126 | 126 | * Renders the results from a successful response. |
127 | 127 | */ |
128 | 128 | Scroller.prototype.render = function( response ) { |
129 | | - var postLoadEvent; |
130 | | - |
131 | 129 | this.body.addClass( 'infinity-success' ); |
132 | 130 |
|
133 | 131 | // Check if we can wrap the html |
134 | 132 | this.element.append( response.html ); |
135 | 133 |
|
136 | | - try { |
137 | | - postLoadEvent = new CustomEvent( 'post-load', { |
138 | | - bubbles: true, |
139 | | - cancelable: true, |
140 | | - detail: response, |
141 | | - } ); |
142 | | - } catch ( e ) { |
143 | | - postLoadEvent = document.createEvent( 'CustomEvent' ); |
144 | | - postLoadEvent.initCustomEvent( 'post-load', true, true, response ); |
145 | | - } |
| 134 | + this.trigger( this.body.get( 0 ), 'is.post-load', { |
| 135 | + jqueryEventName: 'post-load', |
| 136 | + data: response, |
| 137 | + } ); |
146 | 138 |
|
147 | | - this.body.get( 0 ).dispatchEvent( postLoadEvent ); |
148 | | - this.body.trigger( 'post-load', response ); |
149 | 139 | this.ready = true; |
150 | 140 | }; |
151 | 141 |
|
|
634 | 624 | $set.css( 'min-height', '' ).removeClass( 'is--replaced' ); |
635 | 625 | if ( this.pageNum in self.pageCache ) { |
636 | 626 | $set.html( self.pageCache[ this.pageNum ].html ); |
637 | | - self.body.trigger( 'post-load', self.pageCache[ this.pageNum ] ); |
| 627 | + self.trigger( self.body.get( 0 ), 'is.post-load', { |
| 628 | + jqueryEventName: 'post-load', |
| 629 | + data: self.pageCache[ this.pageNum ], |
| 630 | + } ); |
638 | 631 | } |
639 | 632 | } |
640 | 633 | } ); |
|
731 | 724 | this.disabled = false; |
732 | 725 | }; |
733 | 726 |
|
| 727 | + /** |
| 728 | + * Emits custom JS events. |
| 729 | + * |
| 730 | + * @param {Node} el |
| 731 | + * @param {string} eventName |
| 732 | + * @param {*} data |
| 733 | + */ |
| 734 | + Scroller.prototype.trigger = function( el, eventName, opts ) { |
| 735 | + opts = opts || {}; |
| 736 | + |
| 737 | + /** |
| 738 | + * Emit the event in a jQuery way for backwards compatibility where necessary. |
| 739 | + */ |
| 740 | + if ( opts.jqueryEventName && jQuery ) { |
| 741 | + jQuery( el ).trigger( opts.jqueryEventName, opts.data || null ); |
| 742 | + } |
| 743 | + |
| 744 | + /** |
| 745 | + * Emit the event in a standard way. |
| 746 | + */ |
| 747 | + var e; |
| 748 | + try { |
| 749 | + e = new CustomEvent( eventName, { |
| 750 | + bubbles: true, |
| 751 | + cancelable: true, |
| 752 | + detail: opts.data || null, |
| 753 | + } ); |
| 754 | + } catch ( err ) { |
| 755 | + e = document.createEvent( 'CustomEvent' ); |
| 756 | + e.initCustomEvent( eventName, true, true, opts.data || null ); |
| 757 | + } |
| 758 | + el.dispatchEvent( e ); |
| 759 | + }; |
| 760 | + |
734 | 761 | /** |
735 | 762 | * Ready, set, go! |
736 | 763 | */ |
|
0 commit comments