赤福Firefox版の"リロードの代わりに続きを読む"を有効にして自動更新(実況モードもあるよ!)
当前为
// ==UserScript==
// @name futaba auto reloader
// @namespace https://github.com/himuro-majika
// @description 赤福Firefox版の"リロードの代わりに続きを読む"を有効にして自動更新(実況モードもあるよ!)
// @include http://*.2chan.net/*/res/*
// @include http://board.futakuro.com/*/res/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js
// @version 1
// @grant none
// ==/UserScript==
this.$ = this.jQuery = jQuery.noConflict(true);
(function ($) {
soudane();
//通常時60秒おきにリロード
setInterval(rel, 60000);
var s = true; //実況モード有効フラグ
var res = 0; //新着レス数
var reloadButton = document.createElement("a");
reloadButton.id = "relButton";
reloadButton.style.cursor = 'pointer';
reloadButton.innerHTML = "実況モード";
var input, submit;
input = document.evaluate(
"//input[@value='返信する' or @value='送信する']",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
for (var i = 0; i < input.snapshotLength; i++) {
submit = input.snapshotItem(i);
var tr = submit.parentNode;
tr.appendChild(reloadButton);
reloadButton.addEventListener("click",function autoReload() {
if (s) {
//実況モード時5秒おきにリロード
timerID1 = setInterval(rel_scroll, 5000);
//timerID1 = setInterval(rel, 7000);
//自動スクロール15px0.25秒ごと
timerID2 = setInterval("window.scrollBy(0,2)", 12);
reloadButton.style.backgroundColor = '#ffa5f0';
s = false;
} else {
clearInterval(timerID1);
clearInterval(timerID2);
reloadButton.style.background = 'none';
s = true;
}
},true);
}
//新着スクロール
function rel_scroll(){
$('html, body').animate(
{scrollTop:window.scrollMaxY},"fast"
);
location.reload();
}
/*
* ページ末尾でスクロールして新着レスをリセット
*/
window.addEventListener("DOMMouseScroll",function scroll(event) {
var window_y = window.scrollY;
var window_ymax = window.scrollMaxY;
if (event.detail > 0 && window_y >= window_ymax) {
res = 0;
var title_char = title_name();
// console.log("title_char:" + title_char);
document.title = title_char;
}
return;
} ,false);
function rel()
{
soudane();
setTimeout(changetitle, 1000);
location.reload();
}
function soudane()
{
$("td > .sod").each(function(){
var sodnum = $(this).text().match(/\d+/);
if (sodnum){
var col = "rgb(180, 240," + (Math.round(10 * sodnum + 180)) + ")";
$(this).parent().css("background-color", col);
}
});
}
/*
* タブタイトルに新着レス数を表示
*/
function changetitle() {
var title_char = title_name();
// console.log("title_char:" + title_char);
var newres = $("#akahuku_new_reply_header_number").text();
var reloadstatus = $("#akahuku_reload_status").text();
// console.log(reloadstatus);
if (reloadstatus.match(/スレッドが消えたようです。/)) {
document.title = "#" + title_char;
} else {
if(newres) {
res += parseInt(newres);
}
if ( res != 0) {
document.title = "(" + res + ")" + title_char;
}
}
}
function title_name(){
var title = document.title;
var title_num = title.match(/^(#|\(\d+\))/);
var title_num_length;
if(!title_num){
title_num_length = 0;
}
else {
title_num_length = title_num[0].length;
}
var title_name = title.substr(title_num_length);
return title_name;
}
})(jQuery);