您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Only show the user posts you just want to read
// ==UserScript== // @name Only Show This User Posts // @namespace qixinglu.com // @description Only show the user posts you just want to read // @grant GM_info // @grant GM_addStyle // @include http:///localhost/* // @version 0.0.1.20140517140355 // ==/UserScript== /* tools function */ var convert2RegExp = function(pattern) { var firstChar = pattern.charAt(0); var lastChat = pattern.charAt(pattern.length - 1); if (firstChar + lastChat === '//') { return new RegExp(s.substr(1, -1)); } else { pattern = '^' + pattern.replace(/\*/g, '.*') + '$'; return new RegExp(pattern); } }; var create_element_from_string = function(text) { var tag; if (text.indexOf('<td') === 0) { tag = 'tr'; } else if (text.indexOf('<li') === 0) { tag = 'ul'; } else { tag = 'div'; } var parent_element = document.createElement(tag); parent_element.innerHTML = text; return parent_element.firstChild; } /* ostup core */ var ostup = function(site) { var setup_site_default = function() { if (site.showOnlyLabel === undefined) { site.showOnlyLabel = 'only show this user'; } if (site.showAllLabel === undefined) { site.showAllLabel = 'only all users'; } if (site.positionInsert === undefined) { site.positionInsert = false; } } var runtime = { hide_index: -1, post_display: 'block' } var add_custom_style = function() { if (site.style !== undefined) { GM_addStyle(site.style); } } var setup_post_display = function() { post = document.querySelector(site.post); if (post !== null) { runtime.post_display = window.getComputedStyle(post).display; } } var change_display = function(elements, start, length, value) { var end = start + length; for (var i = start; i < end; i += 1) { elements[i].style.display = value; } } var do_filter = function() { var posts = document.querySelectorAll(site.post); var usernames = document.querySelectorAll(site.username); var multiple = posts.length / usernames.length; var show_only = function() { var hide_username = usernames[runtime.hide_index].textContent; for (var i = 0; i < usernames.length; i += 1) { var username = usernames[i]; if (username.textContent !== hide_username) { change_display(posts, i * multiple, multiple, 'none'); } } }; var show_all = function() { for (var i = 0; i < posts.length; i += 1) { change_display(posts, i, multiple, runtime.post_display); } }; if (runtime.hide_index === -1) { show_all(posts); } else { show_only(posts); } }; var get_button_text = function() { return runtime.hide_index === -1 ? site.showOnlyLabel : site.showAllLabel; }; var update_buttons = function() { var button_text = get_button_text(); var buttons = document.querySelectorAll('a.ostup'); for (var i = 0; i < buttons.length; i += 1) { buttons[i].textContent = button_text; } }; var add_buttons = function() { var button_html = '<a class="ostup" href="javascript:void(0)"></a>'; var create_click_callback = function(i) { return function() { runtime.hide_index = runtime.hide_index === -1 ? i : -1; update_buttons(); do_filter(); } } var positions = document.querySelectorAll(site.position); for (var i = 0; i < positions.length; i += 1) { var position = positions[i]; if (site.positionInsert) { var button = position.parentNode.querySelector('a.ostup'); } else { var button = position.querySelector('a.ostup'); } if (button !== null) { continue; } button = create_element_from_string(button_html); button.textContent = get_button_text(); button.addEventListener('click', create_click_callback(i)); if (site.container !== undefined) { var container = create_element_from_string(site.container); container.appendChild(button); button = container; } if (site.positionInsert) { position.parentNode.insertBefore(container, position.nextSibling); } else { position.appendChild(button); } } }; var control = { add_buttons: add_buttons, do_filter: do_filter }; add_custom_style(); setup_post_display(); add_buttons(); return control; } /* rule setup functions */ var select_site = function(sites) { var url = location.href; var i, j, reg, site, urls; for (i = 0; i < sites.length; i += 1) { site = sites[i]; // if is not a array, convert it to urls = (typeof(site.url) === 'string') ? [site.url] : site.url; // start to find with site to use for (j = 0; j < urls.length; j += 1) { reg = convert2RegExp(urls[j]); if (reg.test(url)) { return site; } } } return null; }; // only run as main file if (GM_info.script.name === 'Only Show This User Posts') { var site = select_site(SITES); if (site !== null) { var control = ostup(site); document.addEventListener("LightPagerAppended", function() { control.add_buttons(); control.do_filter(); }); } }