您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows different userscripts to define functions that modify the game's code
当前为
- // ==UserScript==
- // @name Code Injector - Bonk.io
- // @version 1.0.1
- // @description Allows different userscripts to define functions that modify the game's code
- // @author Excigma & kklkkj
- // @namespace https://gf.qytechs.cn/users/416480
- // @match https://bonk.io/gameframe-release.html
- // @run-at document-body
- // @grant GM_xmlhttpRequest
- // @grant unsafeWindow
- // ==/UserScript==
- // What this does:
- // - Finds other userscripts that have defined their injectors in `window.bonkCodeInjectors`, and runs them
- // Credits to https://github.com/kklkkj for creating this system where multiple
- // extensions can edit different parts of Bonk.io' code.
- // Much of the code below was copied from or inspired by https://github.com/kklkkj/kklee/blob/master/src/runInjectors.js
- // Go thank kklkkj for this
- (() => {
- // Original `document.head.appendChild` function that we're going to overwrite
- const _appendChild = document.head.appendChild;
- // When RequireJS tries to add alpha2s.js to <head> we will intercept it,
- // and patch it using functions defined by other scripts in window.bonkCodeInjectors
- document.head.appendChild = (...args) => {
- // Sure, I can do `args?.[0]?.src.includes("alpha2s.js")`, but it's more difficult to read
- if (args[0] && args[0].src.includes("alpha2s.js")) {
- console.log("[Injector] Fetching original alpha2s.js...");
- // Store the url of the original unmodified alpha2s.js
- const alpha2sURL = args[0].src;
- // Remove the src attribute so it doesn't try to load the original alpha2s.js script
- args[0].removeAttribute("src");
- // Fetch the original unmodified alpha2s.js so we can patch it
- // eslint-disable-next-line no-undef
- GM_xmlhttpRequest({
- method: "GET",
- url: alpha2sURL,
- onload: (response) => {
- console.log("[Injector] Fetched alpha2s.js. Patching...");
- // Original alpha2s.js' code
- let str = response.responseText;
- // No bonkCodeInjectors found, this might mean that the user does not have any bonk userscripts installed
- // or that they failed to load before this script
- /* I commented this out because people who prefer userscripts over extensions likely
- * enjoy the flexibility of being able to disable userscripts easily, and are thus likely to have
- * all their userscripts disabled
- */
- if (!unsafeWindow.bonkCodeInjectors) {
- unsafeWindow.bonkCodeInjectors = [];
- // alert("Did not find any Bonk.io userscripts to load. This may be an error, make sure you have scripts installed.");
- }
- // Loop through `bonkCodeInjectors` and pass alpha2s.js' code in for them to modify
- for (const injector of unsafeWindow.bonkCodeInjectors) {
- try {
- // Run injector from other userscripts
- str = injector(str);
- } catch (error) {
- // An injector from one of the other userscripts failed to load
- alert("One of your Bonk.io userscripts was unable to be loaded");
- console.error(error);
- }
- }
- // Add the new script to the <script>'s contents
- args[0].textContent = str;
- // Make RequireJS think that the script loaded properly
- args[0].dispatchEvent(new Event("load"));
- console.log("[Injector] Patched alpha2s.js successfully");
- // Append the modified <script> tag to document.head
- return _appendChild.apply(document.head, args);
- },
- onerror: (error) => {
- // Error fetching original alpha2s.js
- console.error(error);
- alert("An error occurred whilst loading bonk injectors.");
- return _appendChild.apply(document.head, args);
- }
- });
- } else {
- return _appendChild.apply(document.head, args);
- }
- };
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址