您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
adds a create table button to each game in the game list so you don't have to use the crappy play now section
当前为
// ==UserScript== // @name Board Game Arena Games Tab Create Table button // @namespace https://boardgamearena.com // @version 0.2 // @description adds a create table button to each game in the game list so you don't have to use the crappy play now section // @author ArmBandito // @match https://boardgamearena.com/* // @match https://*.boardgamearena.com/* // @grant none // ==/UserScript== (function() { 'use strict'; // Select the node that will be observed for mutations const targetNode = document.getElementById("main-content"); if(targetNode != null){ // Options for the observer (which mutations to observe) const config = {childList: true,}; //const config = { attributes: false, childList: true, subtree: false }; // Create an observer instance linked to the callback function const observer = new MutationObserver(pageChange); // Start observing the target node for configured mutations observer.observe(targetNode, config); //this is for the game info page when we directly load a single game page const gametargetNode = document.getElementById("play_game_buttons"); GameInfoPlay(gametargetNode); } })(); //on page change do our work function pageChange () { //loop throught game rows and increase the height to accomadate for new button var gameslistrows = document.querySelectorAll('.gamelist_itemrow'); for(var gamerow of gameslistrows.values()) { gamerow.style.height = "275px"; } //loop through list of games, and create a "create table" button for each var gameslist = document.querySelectorAll('.gamelist_item'); for(var game of gameslist.values()) { game.style.height = "240px"; var btn = document.createElement("button"); btn.innerHTML = "Create Table"; btn.classList.add("bgabutton"); btn.classList.add("bgabutton_blue"); btn.style.textAlign = "center"; btn.style.marginLeft = "5%"; btn.style.marginRight = "5%"; btn.style.marginTop = "10px"; btn.style.marginBottom = "10px"; btn.style.width = "90%"; btn.addEventListener("click", createGameTable); game.appendChild(btn); } //this is for the game info page when we click on a single game when the page is already loaded const info_play_game = document.getElementById("play_game_buttons"); GameInfoPlay(info_play_game); } function GameInfoPlay(element){ if(element != null){ var btn = document.createElement("button"); btn.innerHTML = "Create Table"; btn.classList.add("bgabutton"); btn.classList.add("bgabutton_big"); btn.classList.add("bgabutton_blue"); btn.addEventListener("click", createGameTable); element.appendChild(btn); } } //when the creat table button for a game is pressed fire off a request for a new table function createGameTable(){ //grab game id var game_id = this.parentNode.id.split("_")[3]; if(game_id == null){ // if game id wasn't found in parent then we're on the single game page const single_game_id = document.getElementById("game_id"); game_id = single_game_id.innerText; } //send async request for a new table var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200){ createTableResponse(JSON.parse(xmlHttp.responseText)); } } xmlHttp.open("GET", window.location.origin + "/table/table/createnew.html?game=" + game_id, true); xmlHttp.send(null); } function createTableResponse(resonse){ console.log(resonse); if(resonse.status == 1){ window.location = window.location.origin + "/table?table=" + resonse.data.table; } else{ alert("Failed to create table: " + resonse.error); } }