您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
сохранить данные о ценах магазина в локальном хранилище
// ==UserScript== // @name SaveShopInfo // @namespace Virtonomica // @description сохранить данные о ценах магазина в локальном хранилище // @version 1.08 // @include https://*virtonomic*.*/*/main/unit/view/*/trading_hall // ==/UserScript== var run = function() { var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window); $ = win.$; /** * записать данные в локальнео хранилище, с проверкой ошибок */ function ToStorage(name, val){ try { window.localStorage.setItem( name, JSON.stringify( val ) ); } catch(e) { out = "Ошибка добавления в локальное хранилище"; //console.log(out); } } function getFromStorage(obj, id_shop){ if (obj[id_shop] == null) return ''; return JSON.stringify(obj[id_shop]); } function Save() { out = 'OK'; //n = shop_time.length; var flag_save = false; var inp_sale = $("input[name*='productData[price]']"); var td_sale = $("td:contains('$')"); for (i=0; i<inp_sale.length; i++) { inp = inp_sale.eq(i); //td_pr = td_sale.eq(i*2); tr = inp.parent().parent(); href = $("a[href*='by_trade_at_cities']", tr); if (href.attr('href') == null) continue; id_item = /(\d+)/.exec( href.attr('href') )[0]; if (shop_price[id_shop] == null) shop_price[id_shop] = new Object(); //console.log( "www " + td_pr.text() ); shop_price[id_shop][ id_item ] = inp.attr('value'); if ( shop_transport[ id_shop ] == null ) shop_transport[id_shop] = new Object(); td_pr = $("td", tr).eq(8); console.log("TD_PR = " + td_pr.text()); shop_transport[id_shop][ id_item ] = parseFloat( td_pr.text().replace('$', '').replace(' ','').replace(' ','').replace(' ','') ); } if (inp_sale.length>0) { ToStorage('shop_price', shop_price); ToStorage('shop_transport', shop_transport); flag_save = true; } // Видимо это не магазина if (flag_save == false) return false; var td = $("td:contains('%')"); for (i=0; i< td.length; i++) { td_pr = td.eq(i+1); tr = td_pr.parent(); href = $("a[href*='by_trade_at_cities']", tr); if (href.attr('href') == null) continue; id_item = /(\d+)/.exec( href.attr('href') )[0]; //console.log(id_item); if (market[ id_shop ] == null) market[ id_shop ] = new Object(); market[ id_shop ][ id_item ] = parseFloat( td_pr.text().replace('%', '') ); } if (td.length > 0) { ToStorage('market', market); flag_save = true; } shop_time[ id_shop ] = today ; //console.log(flag_save); ToStorage('shop_time', shop_time); $("#jsinfo").html("save: " + out ); return true; } function View() { out = "LocalStorage:<br>"; // выводим все что было в локальном хранилище по данному магазину out += "market = " + getFromStorage(market, id_shop) + "<br>"; out += "shop_price = " + getFromStorage(shop_price, id_shop) + "<br>"; out += "shop_transport =" + getFromStorage(shop_transport, id_shop) + "<br>"; out += "shop_time =" + getFromStorage(shop_time, id_shop) ; $("#jsinfo").html( out ); } function Clear() { out = "LocalStorage clear"; // выводим все что было в локальном хранилище for (i=0; i<localStorage.length; i++) { localStorage.removeItem( localStorage[i] ); } $("#jsinfo").html( out ); } // Идентификатор подразделения var id_shop = /(\d+)/.exec(location.href)[0]; // Время обнолвения данных о ценах shop_time = JSON.parse( window.localStorage.getItem('shop_time') ); if (shop_time == null) shop_time = new Object(); var d = new Date(); today = d.getFullYear() + "." + d.getMonth() + "." + d.getDate(); // Объем рынка market = JSON.parse( window.localStorage.getItem('market') ); if (market == null) market = new Object(); // Цена продажи shop_price = JSON.parse( window.localStorage.getItem('shop_price') ); if (shop_price == null) shop_price =new Object(); // Цена в магазине shop_transport = JSON.parse( window.localStorage.getItem('shop_transport') ); if ( shop_transport == null ) shop_transport = new Object(); //console.log("End main"); rc = Save(); // Если это не магазин, то и кнопки нам не нужны // а если и магазин без товара, то кнопки тоже не нужны if (rc == false) return; // кнопки var save = $('<button id=bsave>save</button>').click(function() { Save(); }); var view = $('<button id=bview>view</button>').click(function() { View(); }); var clear = $('<button id=bview>clear local storage</button>').click(function() { Clear(); }); var out = '<td><span id=jsinfo style="color:yellow"></span>'; var container = $('#topblock'); container.append( $('<table><tr><td>').append("<font color=white>LocalStorage: </font>").append(save) .append('<td>').append(view) .append('<td>')/*.append(clear)*/.append(out) ); Save(); //alert("end"); } if(window.top == window) { var script = document.createElement("script"); script.textContent = '(' + run.toString() + ')();'; document.documentElement.appendChild(script); }