您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
BvS WorldKai Synchro Helper 1.3
// ==UserScript== // @name BvS Synchro Helper // @namespace rvBvS // @description BvS WorldKai Synchro Helper 1.3 // @include http*://*animecubed.com/billy/bvs/worldkaiju-group.html // @include http*://*animecubedgaming.com/billy/bvs/worldkaiju-group.html // @version 1.5 // @history 1.5 New domain - animecubedgaming.com - Channel28 // @history 1.4 Now https compatible (Updated by Channel28) // @history 1.3 Made more compliant // ==/UserScript== const GMSTORAGE_PATH = "BvS_Synchro_"; var match; var possibilities = []; var guesses = []; var responses = []; var previousGuesses = []; //guess1, guess2, guess3, guess4, correct, wrong position var elementDisplay = ["Fire", "Lightning", "Water", "Earth", "Wind", "RNG", "Awesome", "Code", "XXXX"]; var reverseElements = {"Fire" : 0, "Lightning" : 1, "Water" : 2, "Earth" : 3, "Wind" : 4, "RNG" : 5, "Awesome" : 6, "Code" : 7, "XXXX" : 8}; var standardFirstGuess = null; var legacyHelp; var guess = null; var element1; var element2; var element3; var element4; var numberofcolors; var possibilitiesleft = null; var allowpossibilitiesdisplay = false; var possibilitydisplaypage = 0; function load(ev) { try { var temp = document.getElementsByName("c1"); if ((temp != null) && (temp.length > 0)) { element1 = temp[0]; element2 = document.getElementsByName("c2")[0]; element3 = document.getElementsByName("c3")[0]; element4 = document.getElementsByName("c4")[0]; numberofcolors = element1.options.length; legacyHelp = getLegacyHelp(); getPreviousGuesses(); if (previousGuesses.length <= 1) { if (legacyHelp == null) { switch (numberofcolors) { case 1: standardFirstGuess = [0, 0, 0, 0]; break; case 2: standardFirstGuess = [0, 0, 1, 1]; break; case 3: standardFirstGuess = [0, 0, 0, 1]; break; case 4: standardFirstGuess = [0, 0, 1, 2]; break; case 5: standardFirstGuess = [0, 0, 1, 1]; break; case 6: standardFirstGuess = [0, 0, 1, 1]; break; case 7: standardFirstGuess = [0, 1, 2, 3]; break; case 8: standardFirstGuess = [0, 1, 2, 3]; break; } } else { switch (numberofcolors) { case 2: standardFirstGuess = [0, 0, 0, 1]; break; case 3: standardFirstGuess = [1, 0, 0, 2]; break; case 4: standardFirstGuess = [1, 0, 1, 2]; break; case 5: standardFirstGuess = [1, 2, 3, 4]; break; case 6: standardFirstGuess = [1, 1, 2, 2]; break; case 7: standardFirstGuess = [1, 0, 2, 3]; break; case 8: standardFirstGuess = [1, 2, 3, 4]; break; } if (standardFirstGuess != null) { standardFirstGuess[0] += legacyHelp; standardFirstGuess[1] += legacyHelp; standardFirstGuess[2] += legacyHelp; standardFirstGuess[3] += legacyHelp; standardFirstGuess[0] %= numberofcolors; standardFirstGuess[1] %= numberofcolors; standardFirstGuess[2] %= numberofcolors; standardFirstGuess[3] %= numberofcolors; } } } if ((previousGuesses.length == 0) && (standardFirstGuess != null)) { guess = standardFirstGuess; if (legacyHelp == null) possibilitiesleft = numberofcolors * numberofcolors * numberofcolors * numberofcolors; else possibilitiesleft = (numberofcolors - 1) * numberofcolors * numberofcolors * numberofcolors; } else if ((previousGuesses.length == 1) && (numberofcolors >= 4) && (numberofcolors <= 8) && (compareArray(previousGuesses[0], standardFirstGuess, 4))) { var index = Math.floor((previousGuesses[0][4] * 11 - previousGuesses[0][4] * previousGuesses[0][4]) / 2) + previousGuesses[0][5]; if (legacyHelp == null) { switch (numberofcolors) { case 4: switch (index) { case 0: guess = [3, 3, 3, 3]; possibilitiesleft = 1; break; case 1: guess = [3, 3, 1, 3]; possibilitiesleft = 16; break; case 2: guess = [3, 3, 0, 1]; possibilitiesleft = 42; break; case 3: guess = [1, 3, 2, 0]; possibilitiesleft = 20; break; case 4: guess = [1, 2, 0, 0]; possibilitiesleft = 2; break; case 5: guess = [0, 3, 2, 3]; possibilitiesleft = 18; break; case 6: guess = [0, 3, 0, 3]; possibilitiesleft = 46; break; case 7: guess = [0, 1, 2, 1]; possibilitiesleft = 40; break; case 8: guess = [0, 1, 2, 0]; possibilitiesleft = 4; break; case 9: guess = [0, 3, 0, 3]; possibilitiesleft = 29; break; case 10:guess = [0, 1, 1, 0]; possibilitiesleft = 20; break; case 11:guess = [0, 1, 0, 2]; possibilitiesleft = 5; break; case 12:guess = [0, 1, 1, 3]; possibilitiesleft = 12; break; } break; case 5: switch (index) { case 0: guess = [2, 2, 2, 3]; possibilitiesleft = 81; break; case 1: guess = [1, 2, 0, 2]; possibilitiesleft = 108; break; case 2: guess = [1, 2, 0, 3]; possibilitiesleft = 54; break; case 3: guess = [0, 1, 0, 2]; possibilitiesleft = 12; break; case 4: guess = [1, 1, 0, 0]; possibilitiesleft = 1; break; case 5: guess = [0, 2, 1, 2]; possibilitiesleft = 108; break; case 6: guess = [0, 2, 0, 0]; possibilitiesleft = 120; break; case 7: guess = [0, 1, 0, 2]; possibilitiesleft = 28; break; case 8: break; case 9: guess = [0, 2, 0, 2]; possibilitiesleft = 68; break; case 10:guess = [0, 1, 1, 2]; possibilitiesleft = 24; break; case 11:guess = [0, 1, 0, 2]; possibilitiesleft = 4; break; case 12:guess = [0, 0, 2, 3]; possibilitiesleft = 16; break; } break; case 6: switch (index) { case 0: guess = [2, 2, 3, 4]; possibilitiesleft = 256; break; case 1: guess = [1, 2, 3, 3]; possibilitiesleft = 256; break; case 2: guess = [1, 2, 3, 3]; possibilitiesleft = 96; break; case 3: guess = [0, 1, 0, 2]; possibilitiesleft = 16; break; case 4: guess = [1, 1, 0, 0]; possibilitiesleft = 1; break; case 5: guess = [0, 2, 3, 3]; possibilitiesleft = 256; break; case 6: guess = [0, 0, 2, 3]; possibilitiesleft = 208; break; case 7: guess = [0, 1, 0, 2]; possibilitiesleft = 36; break; case 8: break; case 9: guess = [0, 1, 2, 3]; possibilitiesleft = 114; break; case 10:guess = [0, 1, 1, 2]; possibilitiesleft = 32; break; case 11:guess = [0, 1, 0, 2]; possibilitiesleft = 4; break; case 12:guess = [0, 1, 1, 2]; possibilitiesleft = 20; break; } break; case 7: switch (index) { case 0: guess = [4, 4, 4, 5]; possibilitiesleft = 81; break; case 1: guess = [0, 4, 4, 5]; possibilitiesleft = 444; break; case 2: guess = [1, 2, 4, 2]; possibilitiesleft = 582; break; case 3: guess = [1, 2, 4, 2]; possibilitiesleft = 180; break; case 4: guess = [0, 0, 0, 1]; possibilitiesleft = 9; break; case 5: guess = [4, 4, 5, 5]; possibilitiesleft = 256; break; case 6: guess = [0, 1, 4, 5]; possibilitiesleft = 432; break; case 7: guess = [0, 0, 1, 1]; possibilitiesleft = 168; break; case 8: guess = [0, 0, 1, 2]; possibilitiesleft = 8; break; case 9: guess = [0, 2, 4, 5]; possibilitiesleft = 150; break; case 10:guess = [0, 0, 1, 1]; possibilitiesleft = 60; break; case 11:guess = [0, 0, 1, 1]; possibilitiesleft = 6; break; case 12:guess = [0, 0, 1, 1]; possibilitiesleft = 24; break; } break; case 8: switch (index) { case 0: guess = [4, 4, 5, 6]; possibilitiesleft = 256; break; case 1: guess = [4, 4, 5, 5]; possibilitiesleft = 976; break; case 2: guess = [1, 2, 0, 4]; possibilitiesleft = 936; break; case 3: guess = [1, 2, 4, 2]; possibilitiesleft = 224; break; case 4: guess = [0, 0, 0, 1]; possibilitiesleft = 9; break; case 5: guess = [4, 4, 5, 5]; possibilitiesleft = 500; break; case 6: guess = [0, 1, 4, 5]; possibilitiesleft = 660; break; case 7: guess = [0, 0, 1, 1]; possibilitiesleft = 204; break; case 8: guess = [0, 0, 1, 2]; possibilitiesleft = 8; break; case 9: guess = [0, 2, 4, 5]; possibilitiesleft = 216; break; case 10:guess = [0, 0, 1, 1]; possibilitiesleft = 72; break; case 11:guess = [0, 0, 1, 1]; possibilitiesleft = 6; break; case 12:guess = [0, 0, 1, 1]; possibilitiesleft = 28; break; } break; } } else { switch(numberofcolors) { case 4: switch (index) { case 0: guess = [3, 3, 3, 3]; possibilitiesleft = 1; break; case 1: guess = [0, 2, 2, 3]; possibilitiesleft = 12; break; case 2: guess = [3, 1, 0, 3]; possibilitiesleft = 28; break; case 3: guess = [3, 1, 2, 0]; possibilitiesleft = 12; break; case 4: guess = [2, 1, 0, 1]; possibilitiesleft = 1; break; case 5: guess = [0, 2, 3, 2]; possibilitiesleft = 14; break; case 6: guess = [1, 1, 3, 3]; possibilitiesleft = 34; break; case 7: guess = [1, 0, 2, 0]; possibilitiesleft = 30; break; case 8: guess = [1, 1, 2, 0]; possibilitiesleft = 3; break; case 9: guess = [3, 1, 1, 3]; possibilitiesleft = 24; break; case 10:guess = [1, 1, 3, 2]; possibilitiesleft = 17; break; case 11:guess = [2, 0, 1, 1]; possibilitiesleft = 4; break; case 12:guess = [0, 0, 1, 3]; possibilitiesleft = 11; break; } break; case 5: switch (index) { case 0: break; case 1: guess = [0, 0, 0, 4]; possibilitiesleft = 12; break; case 2: guess = [0, 0, 1, 2]; possibilitiesleft = 90; break; case 3: guess = [2, 0, 2, 3]; possibilitiesleft = 81; break; case 4: guess = [0, 1, 1, 2]; possibilitiesleft = 9; break; case 5: guess = [0, 0, 1, 3]; possibilitiesleft = 20; break; case 6: guess = [2, 0, 1, 1]; possibilitiesleft = 93; break; case 7: guess = [2, 1, 0, 1]; possibilitiesleft = 87; break; case 8: guess = [1, 1, 2, 3]; possibilitiesleft = 8; break; case 9: guess = [1, 0, 1, 2]; possibilitiesleft = 45; break; case 10:guess = [0, 1, 1, 4]; possibilitiesleft = 33; break; case 11:guess = [1, 1, 2, 2]; possibilitiesleft = 6; break; case 12:guess = [2, 2, 0, 1]; possibilitiesleft = 15; break; } break; case 6: switch (index) { case 0: guess = [3, 0, 3, 4]; possibilitiesleft = 192; break; case 1: guess = [3, 3, 1, 4]; possibilitiesleft = 208; break; case 2: guess = [3, 0, 1, 3]; possibilitiesleft = 84; break; case 3: guess = [2, 0, 1, 2]; possibilitiesleft = 15; break; case 4: guess = [2, 2, 1, 1]; possibilitiesleft = 1; break; case 5: guess = [3, 3, 2, 4]; possibilitiesleft = 208; break; case 6: guess = [3, 0, 2, 2]; possibilitiesleft = 183; break; case 7: guess = [1, 2, 1, 3]; possibilitiesleft = 34; break; case 8: break; case 9: guess = [2, 1, 0, 3]; possibilitiesleft = 101; break; case 10:guess = [1, 2, 2, 3]; possibilitiesleft = 30; break; case 11:guess = [0, 1, 1, 2]; possibilitiesleft = 4; break; case 12:guess = [1, 0, 1, 2]; possibilitiesleft = 19; break; } break; case 7: switch (index) { case 0: guess = [4, 4, 4, 5]; possibilitiesleft = 81; break; case 1: guess = [4, 5, 2, 5]; possibilitiesleft = 396; break; case 2: guess = [2, 4, 1, 1]; possibilitiesleft = 466; break; case 3: guess = [4, 1, 1, 2]; possibilitiesleft = 131; break; case 4: guess = [2, 3, 0, 1]; possibilitiesleft = 6; break; case 5: guess = [1, 4, 3, 5]; possibilitiesleft = 240; break; case 6: guess = [1, 0, 4, 5]; possibilitiesleft = 375; break; case 7: guess = [2, 4, 1, 2]; possibilitiesleft = 135; break; case 8: guess = [0, 0, 0, 2]; possibilitiesleft = 6; break; case 9: guess = [2, 0, 4, 5]; possibilitiesleft = 140; break; case 10:guess = [1, 2, 4, 2]; possibilitiesleft = 53; break; case 11:guess = [0, 0, 0, 3]; possibilitiesleft = 5; break; case 12:guess = [2, 0, 1, 4]; possibilitiesleft = 23; break; } break; case 8: switch (index) { case 0: guess = [5, 0, 5, 6]; possibilitiesleft = 192; break; case 1: guess = [5, 5, 6, 6]; possibilitiesleft = 807; break; case 2: guess = [2, 0, 4, 5]; possibilitiesleft = 837; break; case 3: guess = [2, 3, 5, 3]; possibilitiesleft = 213; break; case 4: guess = [0, 1, 1, 2]; possibilitiesleft = 9; break; case 5: guess = [1, 0, 5, 5]; possibilitiesleft = 425; break; case 6: guess = [5, 2, 3, 6]; possibilitiesleft = 597; break; case 7: guess = [1, 1, 2, 2]; possibilitiesleft = 195; break; case 8: guess = [1, 1, 2, 3]; possibilitiesleft = 8; break; case 9: guess = [2, 5, 3, 6]; possibilitiesleft = 198; break; case 10:guess = [0, 1, 3, 5]; possibilitiesleft = 69; break; case 11:guess = [1, 1, 2, 2]; possibilitiesleft = 6; break; case 12:guess = [2, 1, 3, 3]; possibilitiesleft = 27; break; } break; } if (guess != null) { guess[0] += legacyHelp; guess[1] += legacyHelp; guess[2] += legacyHelp; guess[3] += legacyHelp; guess[0] %= numberofcolors; guess[1] %= numberofcolors; guess[2] %= numberofcolors; guess[3] %= numberofcolors; } } } else { makePossibilities(); for (var i = 0; i < previousGuesses.length; i++) { cleanse([previousGuesses[i][4], previousGuesses[i][5]], [previousGuesses[i][0], previousGuesses[i][1], previousGuesses[i][2], previousGuesses[i][3]], true); } allowpossibilitiesdisplay = true; possibilitiesleft = possibilities.length; if (possibilities.length == 1) { guess = guesses[possibilities[0]]; } else { for (var i = 0; i < 3; i++) { for (var j = 0; j < 5 - i; j++) { responses.push([i, j]); } } responses.push([3, 0]); guess = findBestGuess(); } } element1.selectedIndex = guess[0]; element2.selectedIndex = guess[1]; element3.selectedIndex = guess[2]; element4.selectedIndex = guess[3]; if (possibilitiesleft) { var temp = document.evaluate("//center/table/tbody/tr/td/form", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if ((temp != null) && (temp.snapshotLength > 0)) { temp = temp.snapshotItem(0); var helper = document.createElement("div"); var helperText = "<font size='+1' color='#A10000'><b>Possibilities Remaining</b></font>: " + possibilitiesleft + "<br />\n<div id='rvExpandSynchroDisplay'></div><div id='rvSynchroLinks'>"; if (allowpossibilitiesdisplay) helperText += "<a href='javascript:;' id='rvExpandPossibilities' style='font-size: 12px; color: #a10000;' onfocus='this.blur();'><b>Expand Possibilities</b></a>"; helperText += "</div>"; helper.setAttribute("id", "rvMiniSynchroDisplay"); helper.innerHTML = helperText; temp.parentNode.insertBefore(helper, temp.nextSibling); if (allowpossibilitiesdisplay) document.getElementById("rvExpandPossibilities").addEventListener("click", function() { ExpandPossibilities(0); }, false); } else { alert("Error:\n\nFailed to find spot to put helper"); } } } } catch (e) { alert("Exception!\n\nError name: " + e.name + "\nError message: " + e.message); } } Array.prototype.remove = function(from, to) { var rest = this.slice((to || from) + 1 || this.length); this.length = from < 0 ? this.length + from : from; return this.push.apply(this, rest); }; function ArrayRemove(array, from, to) { var rest = array.slice((to || from) + 1 || array.length); array.length = from < 0 ? array.length + from : from; array.push.apply(array, rest); return array; } function compareArray(arr1, arr2, maxColumn) { if ((maxColumn == null) || (maxColumn == undefined)) maxColumn = arr1.length; for (var i = 0; i < maxColumn; i++) { if (arr1[i] != arr2[i]) return false; } return true; } function getLegacyHelp() { var snap = document.evaluate("//form/center/font/b", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if ((snap == null) && (snap.snapshotLength == 0)) return null; for (var i = 0; temp = snap.snapshotItem(i); i++) { if (match = temp.textContent.match("Legacy Hint\\: You have a strong feeling that the first Chakra isn't (.*)\\.\\.")) { return reverseElements[match[1]]; } } return null; } function getPreviousGuesses() { var snap = document.evaluate("//center/table/tbody/tr/td/center/table/tbody/tr/td/table/tbody/tr", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if ((snap == null) && (snap.snapshotLength == 0)) return; for (var i = 0; temp = snap.snapshotItem(i); i++) { temp = temp.childNodes; previousGuesses[i] = []; for (var j = 0; j < 4; j++) { previousGuesses[i][j] = reverseElements[temp[j].textContent]; } if (match = temp[4].textContent.match("(\\d+) / (\\d+)")) { previousGuesses[i][4] = (parseInt(match[1]) || 0); previousGuesses[i][5] = (parseInt(match[2]) || 0); } } } function makePossibilities() { for (var i = 0; i < numberofcolors; i++) { for (var j = 0; j < numberofcolors; j++) { for (var k = 0; k < numberofcolors; k++) { for (var l = 0; l < numberofcolors; l++) { if (i != legacyHelp) possibilities.push(guesses.length); guesses.push([i, j, k, l]); } } } } } function guessResult(currentguess, solution) { var inplace = 0; var exist = 0; var tempcurrentguess = currentguess.slice(0); var tempsolution = solution.slice(0); /*for (var i = 0; i < 4; i++) { if (tempcurrentguess[i] == tempsolution[i]) { inplace++; tempcurrentguess[i] = "?"; tempsolution[i] = "!"; continue; } for (var j = 0; j < 4; j++) { if (tempcurrentguess[i] == tempsolution[j]) { exist++; tempcurrentguess[i] = "?"; tempsolution[j] = "!"; break; } } }*/ for (var i = 0; i < 4; i++) { if (tempcurrentguess[i] == tempsolution[i]) { inplace++; tempcurrentguess[i] = "?"; tempsolution[i] = "!"; } } for (var i = 0; i < 4; i++) { for (var j = 0; j < 4; j++) { if (tempcurrentguess[i] == tempsolution[j]) { exist++; tempcurrentguess[i] = "?"; tempsolution[j] = "!"; break; } } } return [inplace, exist]; } function cleanse(comparison, theguess, apply) { var count = 0; for (var i = possibilities.length - 1; i >= 0; i--) { var lessee = guessResult(theguess, guesses[possibilities[i]]); if ((lessee[0] != comparison[0]) || (lessee[1] != comparison[1])) { count++; if (apply) ArrayRemove(possibilities, i); } } return count; } function guessScore(guess) { var thisguessscore = 99999; for (var j = 0; j < responses.length; j++) { thisguessscore = Math.min(thisguessscore, cleanse(responses[j], guess, false)); } return thisguessscore; } function findBestGuess() { var bestguessscore = 0; var possible = false; var thisguessscore; var bestguess; for (var i = 0; i < guesses.length; i++) { thisguessscore = guessScore(guesses[i]); if (thisguessscore > bestguessscore) { bestguessscore = thisguessscore; bestguess = guesses[i]; possible = (possibilities.indexOf(i) != -1); } else if ((thisguessscore == bestguessscore) && (!possible) && (possibilities.indexOf(i) != -1)) { bestguess = guesses[i]; possible = true; } } return bestguess; } function ExpandPossibilities(pagescroll) { try { var helperText = ""; possibilitydisplaypage += pagescroll; helperText += "<table border='0' cellspacing='0' cellpadding='0'>"; var temp; var i; var j; for (i = 0; i < 10; i++) { j = i + possibilitydisplaypage*10; if (j >= possibilitiesleft) break; temp = guesses[possibilities[j]]; helperText += ("<tr><td><b>Possibility #" + j + "</b>: </td><td>" + elementDisplay[temp[0]] + ", </td><td>" + elementDisplay[temp[1]] + ", </td><td>" + elementDisplay[temp[2]] + ", </td><td>" + elementDisplay[temp[3]] + "</td></tr>\n"); } helperText += "</table>"; document.getElementById("rvExpandSynchroDisplay").innerHTML = helperText; if (pagescroll == 0) { helperText = "<a href='javascript:;' id='rvNextSet' style='display: inline; font-size: 12px; color: #a10000;' onfocus='this.blur();'><b>Next 10</b></a>"; helperText += " <a href='javascript:;' id='rvPreviousSet' style='display: inline; font-size: 12px; color: #a10000;' onfocus='this.blur();'><b>Previous 10</b></a>"; document.getElementById("rvSynchroLinks").innerHTML = helperText; document.getElementById("rvNextSet").addEventListener("click", function() { ExpandPossibilities(+1); }, false); document.getElementById("rvPreviousSet").addEventListener("click", function() { ExpandPossibilities(-1); }, false); } if ((i == 10) && (j < possibilitiesleft-1)) document.getElementById("rvNextSet").style.display = 'block'; else document.getElementById("rvNextSet").style.display = 'none'; if (possibilitydisplaypage > 0) document.getElementById("rvPreviousSet").style.display = 'block'; else document.getElementById("rvPreviousSet").style.display = 'none'; } catch (e) { alert("Exception!\n\nError name: " + e.name + "\nError message: " + e.message); } } var gvar = new Object(); function GM_ApiBrowserCheck() { if (typeof(unsafeWindow) == 'undefined') { unsafeWindow=window; } if (typeof(GM_log) == 'undefined') { GM_log = function(msg) { try { unsafeWindow.console.log('GM_log: ' + msg); } catch(e) {} }; } GM_clog = function(msg) { if (arguments.callee.counter) { arguments.callee.counter++; } else { arguments.callee.counter=1; } GM_log('('+arguments.callee.counter+') '+msg); } GM_addGlobalStyle = function(css) { var sel = document.createElement('style'); sel.setAttribute('type','text/css'); sel.appendChild(document.createTextNode(css)); var hel = document.documentElement.firstChild; while (hel && hel.nodeName != 'HEAD') { hel=hel.nextSibling; } if (hel && hel.nodeName == 'HEAD') { hel.appendChild(sel); } else { document.body.insertBefore(sel,document.body.firstChild); } return sel; } var needApiUpgrade=false; if(window.navigator.appName.match(/^opera/i) && typeof(window.opera) != 'undefined') { needApiUpgrade=true; gvar.isOpera=true; GM_log=window.opera.postError; GM_log('Opera detected...'); } if(typeof(GM_setValue) != 'undefined') { try { var gsv=GM_setValue.toString(); if (gsv.indexOf('staticArgs') > 0) { gvar.isGreaseMonkey = true; GM_log('GreaseMonkey Api detected...'); } else if (gsv.match(/not\s+supported/)) { needApiUpgrade = true; gvar.isBuggedChrome = true; GM_log('Bugged Chrome GM Api detected...'); } } catch(e) { gvar.isGreaseMonkey = (typeof(GM_setValue) == 'function'); if (gvar.isGreaseMonkey) GM_log('GreaseMonkey Api is assumed because of exception...'); else needApiUpgrade = true; } } else { needApiUpgrade=true; GM_log('No GM Api detected...'); } if(needApiUpgrade) { GM_log('Try to recreate needed GM Api...'); var ws = null; try { ws=typeof(unsafeWindow.localStorage); unsafeWindow.localStorage.length; } catch(e) { ws=null; } // Catch Security error if (ws=='object') { GM_log('Using localStorage for GM Api.'); GM_getValue=function(name,defValue) { var value=unsafeWindow.localStorage.getItem(GMSTORAGE_PATH+name); if(value==null) { return defValue; } else { switch(value.substr(0,2)) { case 'S]': return value.substr(2); case 'N]': return parseInt(value.substr(2)); case 'B]': return value.substr(2)=='true'; } } return value; } GM_setValue=function(name,value) { switch (typeof(value)) { case 'string': unsafeWindow.localStorage.setItem(GMSTORAGE_PATH+name,'S]'+value); break; case 'number': if(value.toString().indexOf('.')<0) { unsafeWindow.localStorage.setItem(GMSTORAGE_PATH+name,'N]'+value); } break; case 'boolean': unsafeWindow.localStorage.setItem(GMSTORAGE_PATH+name,'B]'+value); break; } } GM_deleteValue=function(name) { unsafeWindow.localStorage.removeItem(GMSTORAGE_PATH+name); } } else if(!gvar.isOpera || typeof(GM_setValue)=='undefined') { GM_log('Using temporarilyStorage for GM Api.'); gvar.temporarilyStorage=new Array(); GM_getValue=function(name,defValue) { if(typeof(gvar.temporarilyStorage[GMSTORAGE_PATH+name])=='undefined') { return defValue; } else { return gvar.temporarilyStorage[GMSTORAGE_PATH+name]; } } GM_setValue=function(name,value) { switch (typeof(value)) { case "string": case "boolean": case "number": gvar.temporarilyStorage[GMSTORAGE_PATH+name]=value; } } GM_deleteValue=function(name) { delete gvar.temporarilyStorage[GMSTORAGE_PATH+name]; }; } if(typeof(GM_addStyle)=='undefined') { GM_addStyle=function(css) { var heads = document.getElementsByTagName("head"); if (heads.length > 0) { var node = document.createElement("style"); node.type = "text/css"; node.appendChild(document.createTextNode(css)); heads[0].appendChild(node); } } } if(typeof(GM_openInTab)=='undefined') { GM_openInTab=function(url) { unsafeWindow.open(url,""); } } if(typeof(GM_registerMenuCommand)=='undefined') { GM_registerMenuCommand=function(name,cmd) { GM_log("Notice: GM_registerMenuCommand is not supported."); } } // Dummy if(!gvar.isOpera || typeof(GM_xmlhttpRequest)=='undefined') { GM_log('Using XMLHttpRequest for GM Api.'); GM_xmlhttpRequest=function(obj) { var request=new XMLHttpRequest(); request.onreadystatechange=function() { if(obj.onreadystatechange) { obj.onreadystatechange(request); }; if(request.readyState==4 && obj.onload) { obj.onload(request); } } request.onerror=function() { if(obj.onerror) { obj.onerror(request); } } try { request.open(obj.method,obj.url,true); } catch(e) { if(obj.onerror) { obj.onerror( {readyState:4,responseHeaders:'',responseText:'',responseXML:'',status:403,statusText:'Forbidden'} ); }; return; } if(obj.headers) { for(name in obj.headers) { request.setRequestHeader(name,obj.headers[name]); } } request.send(obj.data); return request; } } } } function waitForReady(callback) { var docState; try { docState = unsafeWindow.document.readyState; } catch(e) { docState = null; } if(docState) { if ((docState != 'complete') && (docState != 'interactive')) { window.setTimeout(waitForReady, 150, callback); return; } } callback(); } GM_ApiBrowserCheck(); waitForReady(load);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址