您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Base to load all the Plugins, also includes some mandatory plugins
当前为
// ==UserScript== // @name InstaSynchP Core // @namespace InstaSynchP // @description Base to load all the Plugins, also includes some mandatory plugins // @version 1.0.7 // @author Zod- // @source https://github.com/Zod-/InstaSynchP-Core // @license GPL-3.0 // @include http://*.instasynch.com/* // @include http://instasynch.com/* // @include http://*.instasync.com/* // @include http://instasync.com/* // @grant none // @run-at document-end // @require https://gf.qytechs.cn/scripts/2855-gm-config/code/GM_config.js // @require https://gf.qytechs.cn/scripts/2859-video-url-parser/code/Video%20Url%20Parser.js // @require https://gf.qytechs.cn/scripts/5647-instasynchp-library/code/InstaSynchP%20Library.js // @require https://gf.qytechs.cn/scripts/5718-instasynchp-cssloader/code/InstaSynchP%20CSSLoader.js // @require https://gf.qytechs.cn/scripts/5719-instasynchp-settings/code/InstaSynchP%20Settings.js // @require https://gf.qytechs.cn/scripts/2857-jquery-bind-first/code/jquerybind-first.js // @require https://gf.qytechs.cn/scripts/5651-instasynchp-event-hooks/code/InstaSynchP%20Event%20Hooks.js // @require https://gf.qytechs.cn/scripts/2858-jquery-fullscreen/code/jqueryfullscreen.js // ==/UserScript== function Core(version) { "use strict"; this.version = version; this.listeners = {}; this.connected = false; } function coreRef() { return window.plugins.core; } Core.prototype.executeOnceCore = function () { var th = coreRef(); window.events = (function () { return { //bind event handlers 'on': function (eventName, callback, preOld) { eventName = eventName.trim(); if (th.listeners[eventName] === undefined) { th.listeners[eventName] = { 'preOld': [], 'postOld': [] }; } //execute it before are after the overwritten function if (preOld) { th.listeners[eventName].preOld.push({ callback: callback }); } else { th.listeners[eventName].postOld.push({ callback: callback }); } }, //bind event handler and remove any previous once 'once': function (eventName, callback, preOld) { this.unbind(eventName, callback); this.on(eventName, callback, preOld); }, //unbind event handlers 'unbind': function (eventName, callback) { var i; //search all occurences of callback and remove it if (th.listeners[eventName] !== undefined) { for (i = 0; i < th.listeners[eventName].preOld.length; i += 1) { if (th.listeners[eventName].preOld[i].callback === callback) { th.listeners[eventName].preOld.splice(i, 1); i -= 1; } } for (i = 0; i < th.listeners[eventName].postOld.length; i += 1) { if (th.listeners[eventName].postOld[i].callback === callback) { th.listeners[eventName].postOld.splice(i, 1); i -= 1; } } } }, //fire the event with the given parameters 'fire': function (eventName, parameters, preOld) { var i, listenersCopy; if (th.listeners[eventName] === undefined) { return; } //make a copy of the listener list since some handlers //could remove listeners changing the length of the array //while iterating over it if (preOld) { listenersCopy = [].concat(th.listeners[eventName].preOld); } else { listenersCopy = [].concat(th.listeners[eventName].postOld); } //fire the events and catch possible errors for (i = 0; i < listenersCopy.length; i += 1) { try { listenersCopy[i].callback.apply(this, parameters); } catch (err) { window.console.log( ("Error: {0}, eventName {1}, function {2} %s %s %o, " + "please check the console " + "and make a pastebin of everything in there").format( err.message, eventName, listenersCopy[i].callback.name), listenersCopy[i].callback, err.stack, err); } } } }; }()); }; Core.prototype.resetVariables = function () { "use strict"; this.connected = false; }; Core.prototype.main = function () { "use strict"; var th = coreRef(); th.executeOnceCore(); events.on('ExecuteOnce', window.plugins.cssLoader.executeOnceCore); events.on('ExecuteOnce', window.plugins.settings.executeOnceCore); //prepare plugins for (var pluginName in window.plugins) { if (window.plugins.hasOwnProperty(pluginName)) { var plugin = window.plugins[pluginName]; if (plugin.preConnect) { events.on('PreConnect', plugin.preConnect); } if (plugin.postConnect) { events.on('PostConnect', plugin.postConnect); } if (plugin.executeOnce) { events.on('ExecuteOnce', plugin.executeOnce); } if (plugin.resetVariables) { events.on('ResetVariables', plugin.resetVariables); } if (Object.prototype.toString.call(plugin.settings) === '[object Array]') { window.plugins.settings.fields = window.plugins.settings.fields.concat(plugin.settings); } } } function load() { //reset variables events.fire('ResetVariables'); //we are not connected yet events.fire('PreConnect'); //these need to be executed last //if the script was loading slow and we are already connected if (window.userInfo) { th.connected = true; events.fire('PostConnect'); } } //these need to be executed last events.on('ExecuteOnce', window.plugins.eventBase.executeOnceCore); events.once('Userlist', function () { th.connected = true; events.fire('PostConnect'); }); //execute one time only scripts events.fire('ExecuteOnce'); //load the scripts if (global.page.name !== 'index') { load(); } //reload the scripts when changing a room events.on('LoadRoom', load); }; window.plugins = window.plugins || {}; window.plugins.core = new Core("1.0.7"); window.addEventListener('load', coreRef().main, false);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址