Steam 购物车自动排序

对 Steam 购物车中的物品按照价格排序

  1. // ==UserScript==
  2. // @name Steam cart sorter
  3. // @name:ZH-CN Steam 购物车自动排序
  4. // @namespace http://tampermonkey.net/
  5. // @version 0.8
  6. // @description sort the Steam cart by price
  7. // @description:ZH-CN 对 Steam 购物车中的物品按照价格排序
  8. // @author SLAPaper
  9. // @match http://store.steampowered.com/cart/*
  10. // @match https://store.steampowered.com/cart/*
  11. // @grant none
  12. // @license MIT
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18. function main() {
  19. function sorter(isAsc) {
  20. let cart_item_list = document.querySelector('.cart_item_list');
  21. let old_items = Array.from(cart_item_list.children);
  22.  
  23. let indicies = new Array(old_items.length);
  24. for (let i = 0; i < indicies.length; ++i) {
  25. indicies[i] = i;
  26. }
  27.  
  28. indicies.sort((a, b) => {
  29. let anode = old_items[a].querySelector('.price:last-of-type');
  30. let bnode = old_items[b].querySelector('.price:last-of-type');
  31.  
  32. if (!anode) {
  33. return -1;
  34. }
  35. if (!bnode) {
  36. return 1;
  37. }
  38.  
  39. let aval = parseInt(anode.textContent.slice(2));
  40. let bval = parseInt(bnode.textContent.slice(2));
  41.  
  42. if (aval - bval == 0) {
  43. return a - b;
  44. }
  45.  
  46. if (isAsc) {
  47. return aval - bval;
  48. }
  49. else {
  50. return bval - aval;
  51. }
  52. });
  53.  
  54. for (let i = 0; i < old_items.length; ++i) {
  55. cart_item_list.appendChild(old_items[indicies[i]]);
  56. }
  57. }
  58.  
  59. let sort_btn = document.createElement('div');
  60. sort_btn.className = 'SortCart';
  61. sort_btn.innerHTML = `
  62. <button class="SortCartAsc">Sort Cart Ascend</button>
  63. <button class="SortCartDesc">Sort Cart Descent</button>
  64. `;
  65.  
  66. document.querySelector('.rightcol').insertBefore(sort_btn, document.querySelector('.rightcol cart_recommendations_ctn'));
  67.  
  68. document.querySelector('.SortCartAsc').addEventListener('click', () => {sorter(true);});
  69. document.querySelector('.SortCartDesc').addEventListener('click', () => {sorter(false);});
  70. }
  71.  
  72. window.addEventListener('load', main);
  73. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址