PageSourceSearch

https://s2.poringa.net/js/shouts.iscroll.js?825

js poringa.net collected 2026-10-02 03:57:00 UTC 2,734 bytes, 116 lines download raw bytes

1(function($) {
2
3	$.fn.iScroll = function(options, args) {
4
5		var lock = false;
6
7		var iscroll = this;
8
9		var container = $(this);
10
11		// Establish our default settings
12		var settings = $.extend({
13			threshold		: 500,
14			scrollContainer	: $(window),
15			contentContainer: $(document),
16			callbacks		: {}
17		}, options);
18
19		var init = function(){
20			var scrollContainer = settings.scrollContainer;
21			var contentContainer = settings.contentContainer;
22			scrollContainer.on('scroll.iscroll', function () {
23				if ($('.modal:visible').length) {
24					return;
25				}
26
27				var pixelsTillEnd = Math.abs(scrollContainer.scrollTop() - (contentContainer.height() - $(window).height()) );
28
29				if (pixelsTillEnd <= settings.threshold) {
30					iscroll.trigger();
31				}
32			}).trigger('scroll.iscroll');
33		};
34
35		this.trigger = function() {
36			if (lock) {
37				return;
38			}
39
40			lock = true;
41			$('.loading[data-trigger="iscroll"]').show();
42			var itemSelector = container.data('selector');
43
44			// Get last shout ID if not initialized
45			var data = data || {
46				page: container.data('page') + 1,
47				last: container.children(itemSelector+':last').data('fetchid')
48			};
49
50			fetch(container.data('fetch'), data);
51		};
52
53		var fetch = function (url, _data) {
54			$.ajax({
55				url: url,
56				data: _data,
57				success: function(response){
58					if (response) {
59						// callbacks.success(response);
60						successCb(response, _data);
61					} else {
62						this.error();
63					}
64
65					//Ejecucion de scripts que vienen por Ajax
66					var responseScript = $(response).filter('script');
67					$.each(responseScript, function(i, script) {
68						eval($(script).html());
69					});
70				},
71				error: function(response){
72					$('.loading[data-trigger="iscroll"]').hide();
73					settings.scrollContainer.unbind('scroll.iscroll');
74				},
75				complete: function(response){
76					lock = false;
77					$('.loading[data-trigger="iscroll"]').hide();
78				},
79			});
80		};
81
82		var successCb = function (response, data) {
83			container.data('page', data.page);
84			var itemSelector = container.data('selector');
85
86			var after_index = -1;
87			var after_id = data.last;
88			if (after_id) {
89				$(response).filter(itemSelector).each(function (index, elem) {
90					if (elem.id == after_id) {
91						after_index = index;
92					}
93				});
94			}
95
96			$(response).filter(itemSelector).each(function (index, elem) {
97				if (index > after_index && $('#' + elem.id).length === 0) {
98					$(elem).appendTo(container);
99				}
100			});
101
102			// Update last
103			data.last = container.children(itemSelector+':last').data('fetchid');
104
105			if(settings.callbacks.success){
106				settings.callbacks.success(response);
107			}
108		};
109
110		return this.each( function() {
111			init(); // Bind scroll events to scroll container
112		});
113
114	}
115
116}(jQuery));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.