Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- !function(window, document) {
- window.InfiniteScroll = function(options) {
- function $(val, node) {
- return node = node || document, node.querySelectorAll(val);
- }
- function isArray(value) {
- return void 0 !== value;
- }
- function render(property) {
- return "function" == typeof property;
- }
- function extend(target, object) {
- target = target || {};
- var key;
- for (key in object) {
- target[key] = "object" == typeof object[key] ? extend(target[key], object[key]) : object[key];
- }
- return target;
- }
- function value(key, value, name) {
- return isArray(key) ? isArray(value) ? void(isArray(name) ? data[key][name] = value : data[key].push(value)) : data[key] : data;
- }
- function noop(a, i) {
- if (isArray(i)) {
- delete data[a][i];
- } else {
- data[a] = [];
- }
- }
- function trigger(name, args) {
- if (isArray(data[name])) {
- var i;
- for (i in data[name]) {
- data[name][i](args);
- }
- }
- }
- function update() {
- return result.innerHTML = state.text.loading, initial = true, id ? (docEl.classList.add(state.state.loading), trigger("loading", [state]), void handler(id, function(s, error) {
- docEl.className = getdate + " " + state.state.load;
- p = document.createElement("div");
- p.innerHTML = s;
- var title = $("title", p);
- var a = $(state.target.post, p);
- var el = $(state.target.anchors + " " + state.target.anchor, p);
- var b = $(state.target.post, node);
- if (title = title && title[0] ? title[0].innerHTML : "", a.length && b.length) {
- var e = b[b.length - 1];
- document.title = title;
- e.insertAdjacentHTML("afterend", '<span class="fi" id="#fi:' + val + '"></span>');
- p = document.createElement("div");
- var i = 0;
- var l = a.length;
- for (; l > i; ++i) {
- p.appendChild(a[i]);
- }
- e.insertAdjacentHTML("afterend", p.innerHTML);
- init();
- id = el.length ? el[0].href : false;
- initial = false;
- val++;
- trigger("load", [state, s, error]);
- }
- }, function(event, error) {
- docEl.classList.add(state.state.error);
- initial = false;
- init(1);
- trigger("error", [state, event, error]);
- })) : (docEl.classList.add(state.state.loaded), result.innerHTML = state.text.loaded, trigger("loaded", [state]));
- }
- function init(err) {
- if (result.innerHTML = "", header) {
- p.innerHTML = state.text[err ? "error" : "load"];
- var row = p.firstChild;
- row.onclick = function() {
- return 2 === state.type && (header = false), update(), false;
- };
- result.appendChild(row);
- }
- }
- var handler = "infinite-scroll-state-";
- var state = {
- target : {
- posts : ".posts",
- post : ".post",
- anchors : ".anchors",
- anchor : ".anchor"
- },
- text : {
- load : "%s",
- loading : "%s",
- loaded : "%s",
- error : "%s"
- },
- state : {
- load : handler + "load",
- loading : handler + "loading",
- loaded : handler + "loaded",
- error : handler + "error"
- }
- };
- var data = {
- load : [],
- loading : [],
- loaded : [],
- error : []
- };
- state = extend(state, options || {});
- state.on = value;
- state.off = noop;
- var p = null;
- handler = function(path, callback, body) {
- if (window.XMLHttpRequest) {
- debugger;
- var req = new XMLHttpRequest;
- req.onload = function() {
- callback(req.responseText, req);
- }
- req.open("GET", path);
- req.send();
- }
- };
- var header = 1 !== state.type;
- var initial = false;
- var node = $(state.target.posts)[0];
- var result = $(state.target.anchors)[0];
- var id = $(state.target.anchor, result);
- var body = document.body;
- var docEl = document.documentElement;
- var getdate = docEl.className || "";
- var i = node.offsetTop + node.offsetHeight;
- var win_height = window.innerHeight;
- var myInterval = 0;
- var resizeTimeout = null;
- var val = 1;
- if (id.length) {
- id = id[0].href;
- node.insertAdjacentHTML("afterbegin", '<span class="fi" id="#fi:0"></span>');
- p = document.createElement("div");
- init();
- var render = function() {
- debugger;
- i = node.offsetTop + node.offsetHeight;
- win_height = window.innerHeight;
- myInterval = body.scrollTop || docEl.scrollTop;
- if (!(initial || i > myInterval + win_height)) {
- update();
- }
- };
- if (0 !== state.type) {
- if (2 === state.type) render();
- window.addEventListener("scroll", function() {
- if (!header) {
- if (resizeTimeout) {
- window.clearTimeout(resizeTimeout);
- }
- resizeTimeout = window.setTimeout(render, 500);
- }
- }, false);
- }
- }
- return state;
- };
- }(window, document);
- new InfiniteScroll({
- type : 0,
- target : {
- posts : ".blog-posts",
- post : ".date-outer",
- anchors : ".blog-pager",
- anchor : ".blog-pager-older-link"
- },
- text : {
- load : '<a class="js-load" href="javascript:;">Muat Lagi</a>',
- loading : '<span class="js-loading" style="cursor:wait;">Memuat\u2026</span>',
- loaded : '<span class="js-loaded">Dimuat.</span>',
- error : '<a class="js-error" href="javascript:;">Kesalahan.</a>'
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement