<script>
export default {
data() {
return {
messages: [],
id: 0
}
},
methods: {
getId() {
return this.id++;
},
_jjj(){
this.messages.push({
id: this.getId(),
data: 'hk',
text: 'jjj!!!!'
});
},
_kkk(){
this.messages.push({
id: this.getId(),
data: 'ooooooooooo',
text: 'ha-ha-haaaa!!!'
});
}
}
}
</script>
<template>
<div v-for="{data, text, id} in messages" :key="id">
<b :data="data">{{text}}</b>
</div>
<button @click="_jjj">11</button>
<button @click="_kkk">12</button>
</template>
const [data, setData] = useState(defaultData);
useEffect(() => {
fetch(...).then(...).then(setData)
}, []);
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;
})
Но это "вредные советы".:)
Ты уверен что хочешь ломать глаза людям с маленьким монитором? Может лучше предусмотреть разбивку на две колонки если не вписывается?