Created
June 29, 2009 13:43
-
-
Save tsukkee/137617 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==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