masuda fold
by
yuta25
2014-04-15 [2014/04/15 18:43:09]
はてな匿名ダイアリーを畳む
@@ -1,6 +1,6 @@
/*
* @title masuda fold
- * @description 匿名日記を畳む
+ * @description はてな匿名ダイアリーを畳む
* @include *://anond.hatelabo.jp/
* @include *://anond.hatelabo.jp/?page=*
* @include *://anond.hatelabo.jp/c/*
/*
* @title masuda fold
* @description はてな匿名ダイアリーを畳む
* @include *://anond.hatelabo.jp/
* @include *://anond.hatelabo.jp/?page=*
* @include *://anond.hatelabo.jp/c/*
* @include *://anond.hatelabo.jp/keyword/*
* @license MIT License
* @require
*/
/**
* this script is related to http://let.hatelabo.jp/yuta25/let/hJmc7avBw8tJ
*/
(function(){
'use strict';
var keyword = document.location.href.match(/jp\/keyword/) ? true : false;
var category = document.location.href.match(/jp\/c/) ? true : false;
var contentAll = [];
var getContentTitleAll = function() {
return document.querySelectorAll('.section h3:first-child');
};
var getContentAll = function(numOfProcessed) {
var contents = document.querySelectorAll('.section');
for (var i = numOfProcessed, contentsLength = contents.length; i < contentsLength; i++) {
var content = contents[i],
nodes = content.childNodes;
var div = document.createElement('div');
var offset;
if (keyword || category) {
offset = 2;
} else {
offset = 1;
}
for (var j = offset,nodesLength = nodes.length - 1; j < nodesLength; j++) {
div.appendChild(nodes[offset]);
}
var footer = nodes[offset];
content.appendChild(footer);
contentAll.push(div);
div.style.display = 'none';
content.insertBefore(div, footer);
}
};
var foldMasudaContent = function() {
var display;
var text;
var isFold;
if (this.dataset.isfold == '1') {
display = 'block';
text = 'close';
isFold = '0';
} else {
display = 'none';
text = 'OPEN';
isFold = '1';
}
contentAll[this.dataset.id].style.display = display;
this.innerHTML = text;
this.setAttribute('data-isfold', isFold);
};
var createFoldAnchor = function(id, titles) {
var span = document.createElement('span');
span.setAttribute('data-id', id);
span.setAttribute('data-isfold', 1);
span.addEventListener('click', foldMasudaContent, true);
span.style.marginLeft = '10px';
span.style.color = '#888888';
span.style.cursor = 'pointer';
titles[id].appendChild(span);
span.innerHTML = 'OPEN';
};
var masudaFold = function(numOfProcessed) {
var titles = getContentTitleAll();
getContentAll(numOfProcessed);
for (var i = numOfProcessed, titleLength = titles.length; i < titleLength; i++) {
createFoldAnchor(i, titles);
}
return titles.length;
};
var numOfProcessed = masudaFold(0);
var timer = 0;
document.addEventListener('DOMNodeInserted', function() {
if(timer) return;
timer = setTimeout(function() {
numOfProcessed = masudaFold(numOfProcessed);
timer = 0;
}, 30);
}, false);
}());
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。