onMessageArrived
вместо console.log()
сделать вызов написанной тобой функции отрисоватьВПО()
. let value;
function onMessageArrived(message) {
console.log("onMessageArrived:"+message.payloadString);
value = "onMessageArrived:"+message.payloadString;
}
<script setup>
? Тогда тебе нужно будет использовать defineExpose
, чтобы сделать доступными методы извне. about:config
privacy.partition.network_state
false
let route_match_info = [];
JSON.parse = ((parse) => function() {
const parsed = parse.apply(this, arguments);
if (Array.isArray(parsed?.route_match_info)) // или типа того, скрин то обрезан
route_match_info = parsed.route_match_info;
return parsed;
})(JSON.parse);
document.addEventListener('mouseup', e => {
const block = e.target.closest('<здесь селектор блока для средней кнопки>');
if (block && e.button === 1) {
// здесь как-то сопоставляем block и элемент route_match_info, например по порядковому номеру или ещё как
const id = route_match_info.find(...).instanceParams.shortcode;
window.open(`https://www.instagram.com/p/${id}`, '_blank');
}
}, true);
JSON.parse = ((parse) => function() {
const parsed = parse.apply(this, arguments);
if (arguments[0]?.includes('C2HT23fic0w'))
console.log('JSON.parse', parsed);
return parsed;
})(JSON.parse);
document.addEventListener('mouseup', e => {
if (e.target.closest('<здесь селектор блока для средней кнопки>') && e.button === 1) {
const id = '<здесь откуда-то достаём C2HT23fic0w>'
window.open(`https://www.instagram.com/p/${id}`, '_blank');
}
}, true);
window.open
и надеяться, что код использует для открытия именно его:function normalize(href) {
return Object.assign(document.createElement('a'), { href }).href;
}
window.open = ((open) => function(url, target, ...rest) {
const [path, id, more] = normalize(url).split('/').slice(3);
if (!more && !target && path === 'p' && id)
target = '_blank';
return open.call(this, url, target, ...rest);
})(window.open);
@loaded
, которое в каждом случае будет уникальным для компонента, зависящим от внутренней логики.