您需要先安装一个扩展,例如 篡改猴、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());
- }
- }
- })();