您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Удобные ссылки для полива, сбора, вскапывания, посадки на ферме.
// ==UserScript== // @name ComfortableLinksForFarm // @namespace https://github.com/MyRequiem/comfortablePlayingInGW // @description Удобные ссылки для полива, сбора, вскапывания, посадки на ферме. // @id comfortablePlayingInGW@MyRequiem // @include http://www.ganjawars.ru/ferma.php* // @grant none // @license MIT // @version 2.11-090117 // @author MyRequiem [http://www.ganjawars.ru/info.php?id=2095458] // ==/UserScript== /*global unsafeWindow */ /*jslint browser: true, maxlen: 80, vars: true, nomen: true */ /*eslint-env browser */ /*eslint indent: ['error', 4], linebreak-style: ['error', 'unix'], quotes: ['error', 'single'], semi: ['error', 'always'], eqeqeq: 'error', curly: 'error' */ /*jscs:disable requireMultipleVarDecl, requireVarDeclFirst */ /*jscs:disable disallowKeywords, disallowDanglingUnderscores */ /*jscs:disable validateIndentation */ (function () { 'use strict'; /** * @class General * @constructor */ var General = function () { /** * @property root * @type {Object} */ this.root = this.getRoot(); /** * @property doc * @type {Object} */ this.doc = this.root.document; }; /** * @lends General.prototype */ General.prototype = { /** * @method getRoot * @return {Object} */ getRoot: function () { var rt = typeof unsafeWindow; return rt !== 'undefined' ? unsafeWindow : window; } }; var general = new General(); /** * @class GetPos * @constructor */ var GetPos = function () { /** * @method init * @param {HTMLElement} obj * @return {Object} */ this.init = function (obj) { var _obj = obj, x = 0, y = 0; while (_obj) { x += _obj.offsetLeft; y += _obj.offsetTop; _obj = _obj.offsetParent; } return {x: x, y: y}; }; }; /** * @class ComfortableLinksForFarm * @constructor */ var ComfortableLinksForFarm = function () { /** * @method setLink * @param {HTMLLinkElement} a * @param {String|null} txt */ this.setLink = function (a, txt) { var target = general.doc. querySelector('center>b>font[color="#990000"]').parentNode; if (txt && (/\(через \d+/.test(a.parentNode.innerHTML))) { return; } var link = a.cloneNode(true); if (!txt) { a.setAttribute('style', 'display: none;'); } else { link.innerHTML = txt; } link.setAttribute('style', 'margin-left: 10px;'); target.appendChild(link); }; /** * @method init */ this.init = function () { // ссылка Собрать, Вскопать, Полить var a1 = general.doc.querySelector('td[bgcolor="#f0fff0"]' + ':not([align="right"])>a[href^="/ferma.php?"]'), // ссылка ближайшее действие a2 = general.doc.querySelector('td[bgcolor="#e0eee0"]>a' + '[href^="/ferma.php?"]'), // кнопка посадить but = general.doc.querySelector('input[value="Посадить"]'), // клетка, на которой находимся pos = general.doc.querySelector('img[src$="ru/i/point2.gif"]'); if (a1) { this.setLink(a1, null); } else if (a2) { this.setLink(a2, 'Далее'); } pos = but && pos ? new GetPos().init(pos.parentNode) : null; if (pos) { but.setAttribute('style', 'position: absolute; ' + 'background: #F4F3F1; ' + 'border-radius: 7px; ' + 'padding: 1px; ' + 'top: ' + (pos.y + 15) + 'px; ' + 'left: ' + (pos.x - 7) + 'px;'); but.focus(); } }; }; new ComfortableLinksForFarm().init(); }());