贴吧原名

显示贴吧原用户名和快捷贴吧搜索

目前為 2017-07-20 提交的版本,檢視 最新版本

// ==UserScript==
// @name        贴吧原名
// @author      Sjmr
// @include     *://tieba.baidu.com/*
// @version     1.5
// @run-at      document-start
// @description 显示贴吧原用户名和快捷贴吧搜索
// @icon        http://tieba.baidu.com/favicon.ico
// @namespace   https://greasyfork.org/users/23790
// @grant        GM_registerMenuCommand
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==


function Menu(){
	var n = ["替换昵称", "使用默认"];
	var r = GM_getValue('replaceNick', false);
	var m = r ? n[1] : n[0];
	GM_registerMenuCommand(m, function (){
		var replaceNick = r ?  false : true;
		GM_setValue('replaceNick', replaceNick);
		location.reload();
    }, null);
}

function checkPost(){
	if (document.getElementsByClassName('user_post_li').length) return;
	var users = document.getElementsByClassName('d_name');
	for (var i = 0; i < users.length; i ++){
		var id = JSON.parse(users[i].lastElementChild.getAttribute('data-field')).un;
		if (GM_getValue('replaceNick', false)) users[i].lastElementChild.innerHTML = id;
		else{
			var uid = JSON.parse(users[i].getAttribute('data-field')).user_id;
			var nick = users[i].lastElementChild.innerHTML;
			var info = nick != id ? '<li style="color:#797c80;" title="ID:' + uid + '">[' + id + ']</li>' : '';
			users[i].outerHTML += info + '<li class="user_post_li"></li>' ;
		}
	}
}

function checkComment(){
	var at = document.getElementsByClassName('at');
	for (var i = 0; i < at.length; i ++){
		if (at[i].innerHTML.search('@') != -1) continue;
		var a = at[i].getAttribute('data-field');
		if (a) at[i].innerHTML = JSON.parse(a.replace(/'/g, '"')).un;
	}
}

function checkThread(){
	if (!document.getElementById('thread_list')) return;
	var users = document.getElementsByClassName('frs-author-name');
	for (var i = 0; i < users.length; i ++) users[i].innerHTML = JSON.parse(users[i].getAttribute('data-field')).un;
}

function showCard(n){
	n ++; if (n > 10) return;
	setTimeout(function(){
		var user = document.querySelector('a.userinfo_username');
		if (!user) {showCard(n); return;}
		var un = user.href.split('=')[1].split('&')[0];
		var id = decodeURIComponent(un);
		var bar = encodeURIComponent(document.querySelector('#wd1').value);
		var link1 = bar ? '<a href="/f/search/ures?ie=utf-8&kw=' + bar + '&qw=&sm=1&un=' + un + '" target="_blank">吧内搜</a> | ' : '';
		var link2 = '<a href="/f/search/ures?ie=utf-8&kw=&qw=&sm=1&un=' + un + '" target="_blank">全吧搜</a>';
		if (user.parentNode.innerHTML.search('top:130px') == -1){
			var search = document.createElement('div');
			user.parentNode.appendChild(search);
			search.outerHTML = '<div style="position:absolute;right:5px;top:130px;font-size:12px;float:left;">' + link1 + link2 + '</div>';
		}
		if (user.parentNode.innerHTML.search('<br>') == -1){
			user.outerHTML += '<br><span style="color:#797c80; font-size:14px;">@' + id + '</span>';}
	}, 200);
}

document.addEventListener('DOMContentLoaded', function(){
	Menu();
	var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
	if (MutationObserver){
		var post = document.querySelector('#j_p_postlist');
		var thread = document.querySelector('#content');
		if (thread && GM_getValue('replaceNick', false)){
			new MutationObserver(function(mutations){
				if (mutations.some(function(m){return (m.target.className == ' j_thread_list clearfix');})) setTimeout(checkThread, 200);
			}).observe(thread, {attributes:true, subtree:true});
		}
		if (post){
			checkPost();
			new MutationObserver(checkPost).observe(post, {childList:true});
			if (!GM_getValue('replaceNick', false)) return;
			new MutationObserver(function(mutations){
				if (mutations.some(function(m){return (m.addedNodes.length > 1);})) setTimeout(checkComment, 200);
			}).observe(post, {childList:true,  subtree:true});
		}
		new MutationObserver(function(mutations){
			if (mutations.some(function(m){return (m.addedNodes.length == 1 && m.addedNodes[0].id == 'user_visit_card');})) showCard(0);
		}).observe(document.body, {childList:true});
	}
});