Skip to content

Instantly share code, notes, and snippets.

@tsukkee
Created June 29, 2009 13:43
Show Gist options
  • Select an option

  • Save tsukkee/137617 to your computer and use it in GitHub Desktop.

Select an option

Save tsukkee/137617 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name tumblr iphone
// @namespace http://relaxedcolumn.blog8.fc2.com/
// @description enable to auto load next page and open reblog window in new tab
// @include http://www.tumblr.com/iphone*
// ==/UserScript==
//
// Bookmarklet for iPhone
// javascript:({update:500,remain:1000,url:'http://gist.github.com/137617.txt',_:function(d,e){e=d.createElement('script');e.src=this.url+"#"+this.update+","+this.remain;e.charset='utf-8';d.body.appendChild(e)}})._(document)
(function() {
// constants
var LOAD_MORE_POSTS_ID = "load_more_posts";
var REBLOG_BUTTON_CLASS = "button half right";
var MODIFIED_CLASS_NAME = REBLOG_BUTTON_CLASS + " modified";
// setting
var params = document.body.lastChild.src.split("#")[1].split(",");
var UPDATE_INTERVAL = params[0] || 500;
var BASE_REMAIN_HEIGHT = params[1] || 1000;
var load_more_posts = document.getElementById(LOAD_MORE_POSTS_ID);
var d = document.documentElement;
var window_height = d.clientHeight;
var scroll_height = d.scrollHeight;
change_target();
var timer = setInterval(function() {
// check that new more posts is loaded
var s = d.scrollHeight;
if(scroll_height != s) {
scroll_height = s;
change_target();
}
// auto load new more posts
if(scroll_height - (window.pageYOffset + window_height) < BASE_REMAIN_HEIGHT) {
load_next();
}
}, UPDATE_INTERVAL);
function load_next() {
dispatchMouseEvent(load_more_posts);
}
function dispatchMouseEvent(element) {
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
element.dispatchEvent(e);
}
function change_target() {
var reblog_buttons = document.getElementsByClassName(REBLOG_BUTTON_CLASS);
for(var i = 0, len = reblog_buttons.length; i < len; ++i) {
var on_click = reblog_buttons[i].onclick.toString();
var match = on_click.match(/location\.href='(.+)'/);
if(match) (function() {
var href = match[1];
var button = reblog_buttons[i];
button.className = MODIFIED_CLASS_NAME;
button.onclick = function() { window.open(href); };
})();
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment