您需要先安装一个扩展,例如 篡改猴、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);}}, }; })();