// ==UserScript== // @name [ONCHE] Prévisualisation de topics // @version 1.1.1 // @description Script pour https://onche.org, ajoute une loupe au début de chaque titre de topic, affichant une prévisualisation au survol. // @author Programmafion // @match https://onche.org/forum/* // @match https://onche.org/topic/* // @downloadURL https://codeberg.org/programmafion2/onche_previsualisation-de-topics/raw/branch/main/onche_previsualisation-de-topics.user.js // @updateURL https://codeberg.org/programmafion2/onche_previsualisation-de-topics/raw/branch/main/onche_previsualisation-de-topics.meta.js // @icon https://image.noelshack.com/fichiers/2022/50/2/1670970239-menheraquipratiquelexamencolorectal.png // ==/UserScript== window.addEventListener('load', location.pathname.includes('/topic/') ? scrollTopic : addPreviewers); function scrollTopic() { const previewerScrollTop = localStorage.getItem('previewer_userscript.previewerScrollTop'); localStorage.removeItem('previewer_userscript.previewerScrollTop'); const firstMessageYDistance = document.querySelector('.message').getBoundingClientRect().y; const headerHeight = document.querySelector('header').scrollHeight; scrollTo(0, firstMessageYDistance - headerHeight - 50 + Number(previewerScrollTop)); } function addPreviewers() { document.querySelector('#left .bloc:last-of-type').style.overflow = 'inherit'; document.querySelectorAll('.topic').forEach(topicEl => { const topicURL = topicEl.querySelector('a:nth-child(2)').href; const domParser = new DOMParser(); const glassElement = domParser.parseFromString('', 'text/html').body.firstChild; glassElement.addEventListener('mouseover', async (event) => { let messagesEl = glassElement.querySelector('.messages'); if (messagesEl) { return messagesEl.style.display = 'block'; } document.body.style.cursor = topicEl.querySelector('.topic-subject').style.cursor = 'progress'; messagesEl = domParser.parseFromString(await (await fetch(topicURL)).text(), 'text/html').querySelector('.messages'); document.body.style.cursor = topicEl.querySelector('.topic-subject').style.cursor = 'auto'; messagesEl.querySelectorAll('.right').forEach(el => { el.remove(); }); Object.assign(messagesEl.style, { position: 'absolute', opacity: 0.95, overflowY: 'auto', fontWeight: 'normal', backgroundColor: '#1b2127', width: '600px', maxHeight: '500px', border: 'solid #2b4878', borderRadius: '2px', cursor: 'default', zIndex: 1 }); messagesEl.addEventListener('mouseleave', () => { messagesEl.style.display = 'none'; }); topicEl.querySelector('.topic-subject').addEventListener('mouseleave', () => { messagesEl.style.display = 'none'; }); if ([messagesEl, topicEl].every(el => !el.matches(':hover'))) { messagesEl.style.display = 'none'; } messagesEl.addEventListener('click', () => { localStorage.setItem('previewer_userscript.previewerScrollTop', messagesEl.scrollTop) }); glassElement.appendChild(messagesEl); }); topicEl.children[1].prepend(glassElement); }); }