fetch('/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + initData
},
})
.then(async response => {
if (!response.ok) {
throw new Error('Network response was not ok ' + await response.text());
}
})
// ==UserScript==
// @name 24forcare.com
// @namespace http://tampermonkey.net/
// @version 2024-10-22
// @description 24forcare.com fix
// @match https://24forcare.com/testyi-nmo/*
// @grant none
// ==/UserScript==
function walkText(target, callback) {
if (target.nodeType === 3) return callback(target) === true;
const treeWalker = document.createTreeWalker(target, NodeFilter.SHOW_TEXT, null);
while (treeWalker.nextNode()) {
if (callback(treeWalker.currentNode) === true) {
return true;
}
}
return false;
}
function processTextNodes(callback, root = document.body || document.documentElement) {
if(walkText(root, callback)) return;
const observe = observer => observer.observe(root, {
characterData: true,
childList: true,
subtree: true
});
const disconnect = observer => observer.disconnect();
observe(new MutationObserver((mutationsList, observer) => {
disconnect(observer);
const arr = [];
for (let mutation of mutationsList) {
if (mutation.type === 'characterData') {
arr.push(mutation.target);
} else {
arr.push(...mutation.addedNodes);
}
}
if(arr.some(node => walkText(node, callback))) return;
observe(observer);
}));
}
function isUpper(char) {
return char.toUpperCase() === char;
}
processTextNodes((node) => {
const text = node.data;
const isRu = /[а-яё]/i.test(text);
// простая проверка что есть русские буквы, чтоб не менять в английском тексте
if(!isRu) return;
// таблица соответствия букв
const table = {
'o': 'о',
'a': 'а'
};
const re = new RegExp(`[${Object.keys(table).join('')}]`, 'ig');
const result = text.replace(re, (char) => {
if (isUpper(table[char])) return table[char].toUpperCase();
return table[char];
});
if (text !== result)
node.data = result;
})
var search = 'room_number[]=2&room_number[]=3&room_number[]=4&price_min=111&price_max=999&area[]=Ленинский район';
var list = Array.from(new URLSearchParams(search), ([name, value]) => {
const isNumber = Number(value).toString() === value;
if (name.endsWith('[]')) {
name = name.replace('[]', isNumber ? `_${value}` : '');
}
if (isNumber) {
value = Number(value);
}
return { name, value }
});
console.log(list);
Какие проблемы использовать дефалтный подход с загрузкой внутри компонента, типа:
Или ты хочешь не переписывая ничего какой-то магический параметр добавить? Тогда для начала код в студию.