此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/6904/27571/WM%20Dynamic%20Grabber%20Object.js
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
(我已经安装了用户样式管理器,让我安装!)
// ==UserScript==
// @name WM Dynamic Grabber Object
// @namespace MerricksdadWMDynamicGrabberObject
// @description This is the dynamic grabber 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(){
//***************************************************************************************************************************************
//***** Dynamic Grabberrabber Object
//***************************************************************************************************************************************
WM.grabber = {
tests:[],
methods:["msg","fromID","fromName","url","body","html","targetID","targetName","caption","title","desc","comments",
"commentorID","commentorName","likeName","likeID","link","either","img","canvas"],
init:function(params){try{
params=(params||{});
var testsIn = getOptJSON("dynamics_"+WM.currentUser.profile) || [];
var globalsIn = getOptJSON("dynamics_global") || {};
//import locals and intermix globals we have a placeholder for
if (isArrayAndNotEmpty(testsIn)) {
for (var t=0; t<testsIn.length; t++) {
if (testsIn[t].isGlobal) {
//make sure the global test still exists
var glob=globalsIn[testsIn[t].uniqueID]||null;
if (glob){
//merge global and local data
//this retains our expanded/enabled parts
var merge=mergeJSON(glob, testsIn[t]);
WM.grabber.newTest(merge);
//flag it so we don't import it again below
glob.alreadyUsed=true;
} else {
//global missing, can't import
log("WM.grabber.init: Global test missing, cannot merge");
}
} else {
//load from locals
WM.grabber.newTest(testsIn[t]);
}
}
}
//import all globals not already accounted for
for (var t in globalsIn) {
var glob=globalsIn[t];
//avoid already imported globals
if (!glob.alreadyUsed){
glob.uniqueID=t;
glob.isGlobal=true;
WM.grabber.newTest(glob);
}
}
}catch(e){log("WM.grabber.init: "+e);}},
save:function(){try{
var ret=[];
var retGlobal={};
if (isArrayAndNotEmpty(WM.grabber.tests)) {
for (var t=0, len=WM.grabber.tests.length; t<len; t++){
var test=WM.grabber.tests[t];
if (!test.isGlobal) {
//save it locally
ret.push(test.saveableData);
} else {
//make a placeholder locally
ret.push({isGlobal:true, uniqueID:test.uniqueID, enabled:test.enabled, expanded:test.expanded});
//and save it globally
var glob=test.saveableData;
glob.uniqueID=test.uniqueID;
retGlobal[test.uniqueID]=glob;
}
}
}
setOptJSON("dynamics_"+WM.currentUser.profile,ret);
setOptJSON("dynamics_global",retGlobal);
}catch(e){log("WM.grabber.save: "+e);}},
newTest:function(params){try{
params=params||{};
var test = new WM.Test(params);
WM.grabber.tests.push(test);
WM.grabber.save();
}catch(e){log("WM.grabber.newTest: "+e);}},
importTest:function(){try{
var params=prompt("Input test data",null);
if (params) {
WM.grabber.newTest(JSON.parse(params));
}
}catch(e){log("WM.grabber.importTest: "+e);}},
//get the test object with id starting at optional node or at top level
//may return null
getTest:function(id,node){try{
var nodes=(node||WM.grabber.tests);
for (var i=0,len=nodes.length;i<len;i++){
if (nodes[i]["id"]==id) {
return nodes[i];
} else if (nodes[i]["kids"]) {
var ret = WM.grabber.getTest(id,nodes[i]["kids"]);
if (ret) return ret;
}
}
}catch(e){log("WM.grabber.getTest: "+e);}},
};
})();