Ozon.ru - общая тема #2

  • Автор темы Автор темы Tysha
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
1773218449250.webp


3594951245/
 
1 шт 0,6 х 4 мм Цепочка хвоста из нержавеющей стали
98/200
2pcs / сумка акриловый квадратный DIY бусины
98/200
8 мм 10pcs/сумка Смола круглые бисеры
104/200
10x6мм 10шт DIY смолы бисеры
132/200
20/10шт 8/10мм Смола масляная живопись бисеры
132/200

Вновь китаец баллы подключил
 
1 шт 0,6 х 4 мм Цепочка хвоста из нержавеющей стали
98/200
2pcs / сумка акриловый квадратный DIY бусины
98/200
8 мм 10pcs/сумка Смола круглые бисеры
104/200
10x6мм 10шт DIY смолы бисеры
132/200
20/10шт 8/10мм Смола масляная живопись бисеры
132/200

Вновь китаец баллы подключил
Там много еще по 107-108
 
Кто там хотел менять id на ссылку, вот код:

setInterval(replaceIdsWithLinks, 2000);
[/SPOILER]
Если не хотите нагружать браузер каждые 2 секунды переделкой ссылок.
Плюс Списание за заказ № тоже обрабатывает.
Каждый найденный текст обрабатывается 1 раз, хоть часами потом держите страницу

JavaScript:
// ==UserScript==
// @name         Замена на URL 1.2
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Заменяет "начисление за товар <ID>" на URL товара и "Списание за заказ №..." на URL заказа
// @match        https://www.ozon.ru/my/points*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ozon.ru
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const processed = new WeakSet();
    const SELECTOR = 'div.i7y_27';

    function replaceIdsWithLinks() {
/*        console.log('Селектор найден:', document.querySelectorAll('div.i7y_27').length);
        document.querySelectorAll('div.i7y_27').forEach(div => {
            console.log('Текст в div:', div.innerText);
        });*/
        document.querySelectorAll(SELECTOR).forEach(div => {
            if (processed.has(div)) return;

            const text = div.innerText || '';
            let newHTML = div.innerHTML;
            let modified = false;

            // Проверяем начисление за товар
            const productRegex = /Начисление за товар (\d+)\b/i;
            const productMatch = text.match(productRegex);
            if (productMatch && productMatch[1]) {
                const id = productMatch[1];
                const url = `https://www.ozon.ru/product/${id}/`;
                const linkHTML = `<a href="${url}" target="_blank">${url}</a>`;
                newHTML = newHTML.replace(productRegex, linkHTML);
                modified = true;
            }
            // Иначе проверяем списание за заказ
            else {
                const orderRegex = /Списание за заказ №([\d-]+)\b/i;
                const orderMatch = text.match(orderRegex);
                if (orderMatch && orderMatch[1]) {
                    const orderId = orderMatch[1];
                    const url = `https://www.ozon.ru/my/orderdetails/?order=${orderId}`;
//                    const linkHTML = `<a href="${url}" target="_blank">${url}</a>`;
//                    newHTML = newHTML.replace(orderRegex, linkHTML);
                      newHTML = newHTML.replace(
                          new RegExp(orderId, 'g'),
                          `<a href="${url}" target="_blank">${orderId}</a>`
                    );
                    modified = true;
                }
            }

            if (modified) {
                div.innerHTML = newHTML;
                processed.add(div);
            }
        });
    }

    // Используем MutationObserver вместо setInterval
    const observer = new MutationObserver(replaceIdsWithLinks);
    observer.observe(document.body, { childList: true, subtree: true });

    window.addEventListener('load', replaceIdsWithLinks);
})();
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху