您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auto readable on load.
// ==UserScript== // @name Auto Readable // @description:en Auto readable on load. // @version 0.1 // @namespace https://twitter.com/foldrr // @include http://* // @description Auto readable on load. // ==/UserScript== (function(){ var d = document; var href = d.location.href; var body = d.getElementsByTagName('body')[0]; // 設定 var DEBUG = false; var includes = [ "/blog.livedoor.jp/", "/blogs.yahoo.co.jp/", "/ameblo.jp/", "/gigazine.net/", ".fc2.com/" ]; var MARGIN_LEFT = body.offsetWidth * 0.20; var MARGIN_RIGHT = body.offsetWidth * 0.25; var BODY_WIDTH = body.offsetWidth * 0.60; // 指定したサイト以外なら終了。 for(var i = 0, n = includes.length; i < n; i++){ if(0 <= href.indexOf(includes[i])){ break; } } if(i == includes.length){ return; } // String拡張: タグを削除する。 String.prototype.stripTags = function(){ return this.replace(/^.+?>/, "") .replace(/<\/.+/, "") .replace(/<!.+/, ""); }; // String拡張: 改行を削除する。 String.prototype.chomp = function(){ return this.replace(/(\r|\n)/, ""); }; // メイン処理 (function(){ // 本文への目印としてヘッダーを取得。 var heads = []; pushHeaders(heads, "h3"); pushHeaders(heads, "h2"); pushHeaders(heads, "h1"); // ページタイトルに似ているヘッダから本文を判別。 var title = d.title; var target = null; for(var i = 0, n = heads.length; i < n; i++){ var text = getText(heads[i]); p(text); if(10 < text.length){ if(title.indexOf(text) !== -1){ target = heads[i]; break; } } } // 本文が見つかればページを編集。 p("target = " + !!target); if(target){ // スタイルを無効化。 for(var i = 0, n = d.styleSheets.length; i < n; i++){ d.styleSheets[i].disabled = true; } // ページ内容を生成。 var parent = target.parentNode.parentNode; target.parentNode.style.width = BODY_WIDTH + "px"; // 本文のタイトルを削除。 target.parentNode.removeChild(target); // 本文のタイトルを再設定。 var a = d.createElement("a"); a.innerHTML = title; a.href = href; var t = d.createElement("h1"); t.appendChild(a); parent.insertBefore(t, parent.childNodes[0]); // BODYを設定。 body.style.marginLeft = MARGIN_LEFT + "px"; body.style.marginRight = MARGIN_RIGHT + "px"; body.innerHTML = parent.innerHTML; } })(); // 指定したタグ名の要素を配列に加える。 function pushHeaders(dst, tagName){ var es = d.getElementsByTagName(tagName); for(var i = 0, n = es.length; i < n; i++){ dst.push(es[i]); } } // ヘッダのテキストを取得する。 function getText(x){ return x.innerHTML.stripTags().chomp(); } // デバッグプリント。 function p(x){ if(DEBUG){ GM_log(x.toString()); } } })();