您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This is the docking object which is created under the WM version 4.x script
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/6906/27574/WM%20Sidekick%20Docking%20Object.js
- // ==UserScript==
- // @name WM Sidekick Docking Object
- // @namespace MerricksdadWMSidekickDockingObject
- // @description This is the docking object which is created under the WM version 4.x script
- // @license http://creativecommons.org/licenses/by-nc-nd/3.0/us/
- // @version 4.0.0.0
- // @copyright Charlie Ewing except where noted
- // ==/UserScript==
- //this script requires some functions in the WM Common Library
- //this script needs access to a pre-defined JSON object
- (function(){
- //***************************************************************************************************************************************
- //***** Sidekick Docking Object
- //***************************************************************************************************************************************
- WM.dock = {
- //restructure menu to append appID before every object
- fixMenu: function(menu,app){try{
- var ret={};
- //for each object in menu
- for (var o in menu){
- //WM.message(o);
- ret[app+o]=menu[o];
- //fix button functions and arrays to be prepended by the appID of that sidekick
- var t=menu[o]["type"];
- switch(t){
- case "button_highlight":
- case "button_selectmulti":
- case "button_selectprefix":
- //fix elements in the clearfirst array
- if (menu[o]["clearfirst"]){
- for (var i=0,len=ret[app+o]["clearfirst"].length;i<len;i++){
- ret[app+o]["clearfirst"][i] = app+ret[app+o]["clearfirst"][i];
- }
- }
- //fix elements in the options array
- if (menu[o]["options"]){
- for (var i=0,len=ret[app+o]["options"].length;i<len;i++){
- ret[app+o]["options"][i] = app+ret[app+o]["options"][i];
- }
- }
- if (menu[o]["clearPrefix"]){
- ret[app+o]["clearPrefix"]=app+ret[app+o]["clearPrefix"];
- }
- if (menu[o]["prefix"]){
- ret[app+o]["prefix"]=app+ret[app+o]["prefix"];
- }
- }
- //fix kids
- if (menu[o]["kids"]){
- //rebuild kids object
- ret[app+o]["kids"]=WM.dock.fixMenu(menu[o]["kids"],app);
- }
- }
- return ret;
- } catch(e) {log("WM.dock.fixMenu: "+e);}},
- //restructure tests to append appID before every object's return
- fixTests: function(arr,app){try{
- //for each test in array
- for (var t=0,len=arr.length;t<len;t++) {
- var ret=arr[t].ret, kids=arr[t].kids;
- //replace return value
- if (ret) {
- if (ret!="exclude" && ret!="none") {
- arr[t].ret=app.appID+ret;
- }
- }
- //process subtests
- if (kids) WM.dock.fixTests(kids,app);
- }
- } catch(e) {log("WM.dock.fixTests: "+e);}},
- fixAcceptTexts:function(app){try{
- var newAccText={};
- for (var s in app.accText) {
- newAccText[app.appID+s]=app.accText[s];
- }
- app.accText=newAccText;
- } catch(e) {log("WM.dock.fixAcceptTexts: "+e);}},
- onSidekickParsed: function(newset){try{
- //save it into the NEW format for games
- var app=(WM.apps[newset.appID]=new WM.App(newset));
- //promptText JSON.stringify(WM.config.settings));
- WM.updateSettingsValues();
- //detach the menu from the newset to reduce duplication
- delete app.menu;
- //fire priority event
- (function(){WM.rulesManager.doEvent("onSidekickDock",app);})();
- //fetch its initial posts
- //app.fetchPosts();
- WM.newSidekicks.push(app);
- }catch(e){log("WM.dock.onSidekickParsed: "+e);}},
- parseNewSidekick: function(node){try{
- if (node){
- var v = node.getAttribute('data-ft');
- node.setAttribute('data-ft','');
- if (v||null) {
- var newset = JSON.parse(v);
- WM.dock.onSidekickParsed(newset);
- }
- }
- } catch(e) {log("WM.dock.parseNewSidekick: "+e);}},
- answerDockingDoor: function(){try{
- //log("Sidekick requesting to dock");
- //get all sidekicks that left info on the dock;
- forNodes(".//div[@id='wmDock']/div[(@data-ft) and not(@data-ft='')]",{},function(node){
- if (node.getAttribute('data-ft') !=""){
- window.setTimeout(WM.dock.parseNewSidekick,1,node);
- }
- });
- } catch(e) {log("WM.dock.answerDockingDoor: "+e);}},
- };
- })();