Walmart Cart Review

Allows you to see the entire Walmart Grocery cart all at once and sorts from prices from high to low when you add ?sort to the url

// ==UserScript==
// @name         Walmart Cart Review
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Allows you to see the entire Walmart Grocery cart all at once and sorts from prices from high to low when you add ?sort to the url
// @author       timsayshey
// @match        https://walmart.com/*
// @match        https://www.walmart.com/*
// @grant        none
// ==/UserScript==

function addJQuery(callback) {
  var script = document.createElement("script");
  script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js");
  script.addEventListener('load', function() {
    var script = document.createElement("script");
    script.textContent = "window.jQ=jQuery.noConflict(true);(" + callback.toString() + ")();";
    document.body.appendChild(script);
  }, false);
  document.body.appendChild(script);
}

window.totalRuns = 0;

// the guts of this userscript
function main() {
    jQ("ytd-rich-item-renderer").css("visibility","hidden");

    window.timer = setInterval(go, 500);

    window.onpopstate = function (event) {
        go()
    }

    function go() {
        var divList = jQ("div[class^='CartItem__itemContainer___']");
        if(divList.length) {
            var searchParams = new URLSearchParams(window.location.search);
            if(searchParams.has('sort')) {
                divList.sort(function(a, b){
                    var aa = parseFloat(jQ(a).find("span[class^='Price__priceUnit___']").text().replace(/[^0-9,.]+/g,''));
                    var bb = parseFloat(jQ(b).find("span[class^='Price__priceUnit___']").text().replace(/[^0-9,.]+/g,''));
                    return bb - aa;
                });
                jQ("div[class^='Cart__items___']").html(divList);
            }
            jQ("div[class^='styles__mainContent___'] section,div[class^='styles__mainContent___'] header").remove();
            jQ("div[class^='Cart__items___']").attr("style",`
               width: 100%;
               position: fixed;
               z-index: 9999999999999999;
               left: 0;
               right: 0;
               top: 0;
               bottom: 0;
               background: white;
            `);
        }
    }

    // Detect content changes
    var proxied = window.XMLHttpRequest.prototype.send;
    window.XMLHttpRequest.prototype.send = function() {

        //Here is where you can add any code to process the request.
        //If you want to pass the Ajax request object, pass the 'pointer' below
        var pointer = this
        var intervalId = window.setInterval(function(){
            if(pointer.readyState != 4){
                return;
            }

            //Here is where you can add any code to process the response.
            go();
            setTimeout(function(){ go(); }, 2000);

            //If you want to pass the Ajax request object, pass the 'pointer' below
            clearInterval(intervalId);

        }, 1);//I found a delay of 1 to be sufficient, modify it as you need.
        return proxied.apply(this, [].slice.call(arguments));
    };
}


// load jQuery and execute the main function
addJQuery(main);

QingJ © 2025

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