京东自营过滤

在京东搜索页面添加自营与非自营商品过滤选项

  1. // ==UserScript==
  2. // @name 京东自营过滤
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1
  5. // @description 在京东搜索页面添加自营与非自营商品过滤选项
  6. // @author 遥不可及灬
  7. // @match https://search.jd.com/Search*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // 创建单选按钮
  16. const filterContainer = document.createElement('div');
  17. filterContainer.style.marginBottom = '10px';
  18. filterContainer.style.padding = '10px';
  19. filterContainer.style.backgroundColor = '#f5f5f5';
  20. filterContainer.style.borderBottom = '1px solid #ddd';
  21. filterContainer.innerHTML = `
  22. <label><input type="radio" name="filter" value="all" checked> 全部</label>
  23. <label><input type="radio" name="filter" value="self"> 自营</label>
  24. <label><input type="radio" name="filter" value="non-self"> 非自营</label>
  25. `;
  26.  
  27. // 将单选按钮插入到搜索结果列表的顶部
  28. const searchResultContainer = document.querySelector('.m-list');
  29. if (searchResultContainer) {
  30. searchResultContainer.insertBefore(filterContainer, searchResultContainer.firstChild);
  31. }
  32.  
  33. // 过滤函数
  34. function filterItems() {
  35. const selectedFilter = document.querySelector('input[name="filter"]:checked').value;
  36. const items = document.querySelectorAll('.gl-item');
  37.  
  38. items.forEach(item => {
  39. const contactButton = item.querySelector('.p-shop b');
  40. const isSelf = contactButton && contactButton.classList.contains('im-02');
  41.  
  42. if (selectedFilter === 'all' ||
  43. (selectedFilter === 'self' && isSelf) ||
  44. (selectedFilter === 'non-self' && !isSelf)) {
  45. item.style.display = '';
  46. } else {
  47. item.style.display = 'none';
  48. }
  49. });
  50. }
  51.  
  52. // 监听单选按钮变化
  53. document.querySelectorAll('input[name="filter"]').forEach(radio => {
  54. radio.addEventListener('change', filterItems);
  55. });
  56.  
  57. // 监听页面滚动事件,以处理懒加载的商品
  58. let isScrolling = false;
  59. window.addEventListener('scroll', () => {
  60. if (!isScrolling) {
  61. isScrolling = true;
  62. setTimeout(() => {
  63. filterItems();
  64. isScrolling = false;
  65. }, 200); // 200ms 延迟,避免频繁触发
  66. }
  67. });
  68.  
  69. // 初始过滤
  70. filterItems();
  71. })();

QingJ © 2025

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