您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds keyboard shortcuts for navigating forum pages on teamfortress.tv
当前为
- // ==UserScript==
- // @name tftv keyboard shortcuts
- // @namespace Lense
- // @description Adds keyboard shortcuts for navigating forum pages on teamfortress.tv
- // @include http://teamfortress.tv/thread/*
- // @include http://www.teamfortress.tv/thread/*
- // @include https://teamfortress.tv/thread/*
- // @include https://www.teamfortress.tv/thread/*
- // @version 0.2
- // @grant none
- // ==/UserScript==
- /*
- * Helper function to scroll to post by id
- */
- function goto_post(id) {
- document.getElementById(id).scrollIntoView();
- window.scrollBy(0,-40)
- }
- /*
- * Find the number of pages in the thread
- */
- var lastPage = 1;
- var nodeList = document.querySelectorAll(".page-btn");
- for(var i=0; i<nodeList.length; i++) {
- if(parseInt(nodeList[i].textContent) > lastPage) {
- lastPage = parseInt(nodeList[i].textContent);
- }
- }
- /*
- * Find the post number of the top post on the page
- */
- var posts = document.querySelectorAll(".post");
- var cur_post = 0;
- /*
- * Get and process keypresses
- */
- document.onkeypress = function (e) {
- // Not entirely sure why this is useful, but it can't break anything that isn't already broken
- e = e || window.event;
- // Ignore keypresses in text boxes
- if(e.target.nodeName != "BODY") {
- // got keypress, but it's probably in a textbox, so ignore it
- return;
- }
- // Current page number
- var page = window.location.search == "" || parseInt(window.location.search.match("page=([0-9]*)")[1]);
- // and yes, I am proud of the logic in that statement.
- switch(e["key"]) {
- /*
- * Pages (left/right)
- */
- case "d":
- if(page != lastPage) {
- page = (page+1).toString();
- window.location.search = "?page=" + page;
- }
- break;
- case "a":
- if(page != 1) {
- page = (page-1).toString();
- window.location.search = "?page=" + page;
- }
- break;
- case "D":
- if(page != lastPage) {
- window.location.search = "?page=" + lastPage.toString();
- }
- break;
- case "A":
- if(page != 1) {
- window.location.search = "?page=1";
- }
- break;
- /*
- * Posts (up/down)
- */
- case "w":
- if(cur_post > 0) {
- cur_post--;
- }
- goto_post(posts[cur_post].id);
- break;
- case "s":
- if(cur_post < posts.length - 1) {
- cur_post++;
- }
- goto_post(posts[cur_post].id);
- break;
- case "W":
- cur_post = 0;
- goto_post(posts[cur_post].id);
- break;
- case "S":
- cur_post = posts.length - 1;
- goto_post(posts[cur_post].id);
- break;
- /*
- * Frags (+/-)
- */
- case "q":
- $.ajax({
- type: 'post',
- data: {},
- url: '/post/frag/' + posts[cur_post].id.slice(8) + '/plus',
- });
- break;
- case "e":
- $.ajax({
- type: 'post',
- data: {},
- url: '/post/frag/' + posts[cur_post].id.slice(8) + '/minus',
- });
- break;
- }};