GM_HttpReq

获取提交参数方法

Version au 14/04/2023. Voir la dernière version.

Ce script ne doit pas être installé directement. C'est une librairie destinée à être incluse dans d'autres scripts avec la méta-directive // @require https://update.greasyfork.org/scripts/463963/1175558/GM_HttpReq.js

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         GM_HttpReq
// @version      0.3
// @description  获取提交参数方法
// @license      All Rights Reserved
// @resource     priceOpen priceOpen
// @grant        GM_getResourceText
// ==/UserScript==

function priceOpen() {
    var open = XMLHttpRequest.prototype.open;
    var send = XMLHttpRequest.prototype.send;
    XMLHttpRequest.prototype.open = function () {
        var url = arguments[1];
        var method = arguments[0];
        if (method.toUpperCase() === 'GET' && url.indexOf('mtop.damai.cn/h5/mtop.alibaba.detail.subpage.getdetail') != -1) {
            this._url = url;  //保存请求的 URL
            console.log('获取到了GET request');
        }
        open.apply(this, arguments);
    };

    XMLHttpRequest.prototype.send = function () {
        this.addEventListener('readystatechange', function () {
            if (this.readyState === 4 && this.status === 200 && this._url && this._url.indexOf('mtop.damai.cn/h5/mtop.alibaba.detail.subpage.getdetail') != -1) {
                var responseText = JSON.parse(this.responseText);
                var result = JSON.parse(responseText.data.result);
                var skuList = result.perform.skuList;
                // 解析响应内容,获取相关信息
                console.log('获取到可选择的场次详情:', skuList);
                const skuIds = [];
                const itemIds = [];
                const priceNames = [];
                for (var k = 0; k < skuList.length; k++) {
                    skuIds.push(skuList[k].skuId);
                    itemIds.push(skuList[k].itemId);
                    priceNames.push(skuList[k].priceName);
                }
                sessionStorage.setItem('skuIds', skuIds);
                sessionStorage.setItem('itemIds', itemIds);

                let priceNameStr = "";
                for (let i = 0; i < priceNames.length; i++) {
                    priceNameStr += i + " : " + priceNames[i] + "\n";
                }
                alert("选择票价对应的序号输入: \n\n" + "当前选择场次:" + result.perform.performName + "\n\n" + priceNameStr);
            }
        });
        send.apply(this, arguments);
    };
}


function submit_phone_order() {
    console.log("提交订单中...");
    $("div[view-name='MColorFrameLayout']").attr("id", "myOrderSubmit");
    if ($("#myOrderSubmit")[0] == null) {
        sessionStorage.setItem("isStopped", "stop");
        return;
    }
    var submitBtn = $("#myOrderSubmit")[0].nextSibling;
    var myEvent = new Event('dx_tap');
    submitBtn.dispatchEvent(myEvent);
    setTimeout(check_phone_alert, 200);
    sessionStorage.setItem("isStopped", "start");
}