您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Some custom enhancements to bonk.io
- // ==UserScript==
- // @name Bonk.io Custom Mods
- // @namespace http://tampermonkey.net/
- // @version 0.5
- // @description Some custom enhancements to bonk.io
- // @author You
- // @match https://bonk.io/*
- // @grant none
- // ==/UserScript==
- /* jshint esversion:6 */
- (function () {
- 'use strict';
- const pd_func = document.getElementById('maingameframe').contentWindow.Event.prototype.preventDefault;
- document.getElementById('maingameframe').contentWindow.Event.prototype.preventDefault = function() {
- const ev = this;
- if (ev.ctrlKey || ev.shiftKey || (ev.key?.[0] === 'F' && ev.key?.length > 1)) return;
- const bound_pd = pd_func.bind(ev);
- bound_pd();
- };
- let style1 = `
- <style>
- body { overflow: hidden; }
- #bonkioheader { display: none; }
- #adboxverticalleftCurse { display: none; }
- #adboxverticalCurse { display: none; }
- #descriptioncontainer { display: none; }
- #maingameframe { margin: 0 !important; }
- </style>
- `;
- document.head.insertAdjacentHTML("beforeend", style1);
- window.addEventListener('load', () => {
- let frame = document.getElementById('maingameframe');
- let frameDoc = document.getElementById('maingameframe').contentDocument;
- let setup;
- let observer = new MutationObserver((mutations, me) => {
- if (frameDoc.getElementById('roomlisttopbar')) {
- me.disconnect(); // stop observing
- setup();
- return;
- }
- });
- observer.observe(frameDoc, {
- childList: true,
- subtree: true
- });
- setup = () => {
- /*
- let style1 = `
- <style>
- body { overflow: hidden; }
- #bonkioheader { display: none; }
- #adboxverticalleftCurse { display: none; }
- #adboxverticalCurse { display: none; }
- #descriptioncontainer { display: none; }
- #maingameframe { margin: 0 !important; }
- </style>
- `;
- document.head.insertAdjacentHTML("beforeend", style1);
- */
- let placeholderStyler = `
- <style>
- [contenteditable=true]:empty:before {
- content: attr(placeholder);
- pointer-events: none;
- display: block; /* For Firefox */
- color: #757575;
- }
- </style>
- `;
- frameDoc.head.insertAdjacentHTML("beforeend", placeholderStyler);
- console.log(document.head);
- let $ = frame.contentWindow.$;
- function filterRooms(s) {
- s = s.toLowerCase();
- let matches = el => el.children[0].textContent.toLowerCase().includes(s);
- $('#roomlisttable tr').each((i, el) => {
- el.hidden = !matches(el);
- });
- }
- let inp = `<span contentEditable="true" type="text" id="roomSearchInputBox" placeholder="Search Rooms.." style="
- float: right;
- padding: 2px 8px;
- margin: 5px 20px;
- border: 2px solid #006157;
- border-radius: 5px;
- font: large futurept_b1;
- width: 20%;
- background: white;
- "></span>`;
- $('#roomlisttopbar').append(inp);
- function debounce (fn) {
- // Setup a timer
- let timeout;
- // Return a function to run debounced
- return function () {
- // Setup the arguments
- let context = this;
- let args = arguments;
- // If there's a timer, cancel it
- if (timeout) {
- window.cancelAnimationFrame(timeout);
- }
- // Setup the new requestAnimationFrame()
- timeout = window.requestAnimationFrame(function () {
- fn.apply(context, args);
- });
- };
- }
- $('#roomSearchInputBox').keyup(debounce(ev => filterRooms(ev.target.textContent)));
- $('body').keydown(debounce(ev => {
- if (ev.altKey) {
- if (ev.key === 'q' && $('#roomListContainer')[0].offsetParent === null) {
- $('#pretty_top_exit').click(); $('#leaveconfirmwindow_okbutton').click();
- }
- else if (ev.key === 'r') {$('#roomlistrefreshbutton').click();}
- }
- if (ev.key === '/') $('#roomSearchInputBox').focus();
- }));
- /****** Implemented by Chaz *******
- // Can double click room to trigger join
- let room_join_dblclick_handler = (ev) => $("#roomlistjoinbutton").click();
- $("#roomlisttable").on("dblclick", "tr", room_join_dblclick_handler);
- // Press enter to submit password for joining room
- let room_pass_enter_handler = (ev) => {
- ev.key === "Enter" && $("#roomlistpassjoinbutton").click();
- };
- $("#roomlistjoinpasswordtext").on("keydown", room_pass_enter_handler);
- *******/
- };
- });
- })();