Remove ads with Gold »
Ylilauta userscript-lanka. Edellinen:
546 replies by 143 users
Postataampa tännekin. Eli kirjoittamani Sopsyblokkeri alunperin palautelaudalta: // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.4 // @grant none // @run-at document-start // ==/UserScript== class SopsyFunction extends Function { constructor(name) { super(); Object.defineProperty(this, 'name', {value: name}); } toString() { return `function ${this.name}() {\n [native code]\n}`; } } for (const name of ['alert','confirm']) { Object.defineProperty(window, name, {configurable: true, writable: true}); window[name] = new SopsyFunction(name); } Tampermonkeyn käyttäjät joutuvat kytkemään Tampermonkeyn asetuksista advanced-moden käyttöön, ja experimental-asetuksista inject moden instantiksi. Seuraavilla lisäfilttereillä uBlock Originiin saa mainokset piiloon: ! Sopsyn homoiluestot á la 2022-04-07 ylilauta.org##.toast-root:style(z-index:-999 !important;) ylilauta.org##iframe.a:style(height: 100px !important; padding: 50px !important;) ylilauta.org##iframe.h:style(height: 100px !important; padding: 50px !important;) @@||t.ylilauta.org/ad/* @@||v.ylilauta.org/ad/* @@||i.ylilauta.org/ad/* t.
Uusin versio AdGuard Base -listasta näyttäisi toimivan myös kun ja jos userscriptit on pois päältä.
Noh mikäs nyt kusiaivolla kun ei oo uutta versiota vääntäny:D alkaako ideat loppuu
checkTampering() { const functions = ['setTimeout', 'setInterval', 'alert', 'confirm', 'getComputedStyle', 'parseInt', 'parseFloat']; for (const fn of functions) { const regex = new RegExp('^function ' + fn + '\\(\\)\\s*{\\s*\\[native code]\\s*}$'); let tryDelete; try { tryDelete = delete window[fn]['toString']; } catch (e) { tryDelete = false; } if ( !tryDelete || typeof window[fn] !== 'function' || window[fn].name !== fn || window[fn].toString().replaceAll('\n', '').match(regex) === null ) { // Welcome to reading this comment! // Yes, it does have security implications. // It's not just to prevent scripts removing warnings even though it started that way. this.toast.error( _('It seems that your browser\'s native functions have been tampered. Your session is disabled for security reasons.'), _('Protection error'), {displayTime: 10_000} ); this.modules['Ajax'].setCsrfToken(''); break; } } } Sieltähän sitä paikkausta jo tuliki :D
>näytä pelkkiä kasinomainoksia joiden kohdeyleisö on peliongelmaisia, köyhiä tai muuten haavoittuvaisia, kuten lapsia >suutu kun ihmiset käyttävät mainoksenestoa vaikka kyseinen toiminto on pakollinen jo pelkästään haittaohjelmien/sivujen takia, joihin ylilauta nyt kuuluu >käytä oikeasti aikaa ja miestyötunteja siihen että saat pakotettua täysin moraalittomat kasinomainokset edellä mainituille ryhmille ja revi pelihoususi kun kourallinen nyymejä käyttää anti-jutkuilu-skriptejä estämään roskasivun roskatoiminnot Missä kohtaa sopsysta tuli oikeasti paha ihminen?

2 y 2 mo

>näytä pelkkiä kasinomainoksia joiden kohdeyleisö on peliongelmaisia, köyhiä tai muuten haavoittuvaisia, kuten lapsia >suutu kun ihmiset käyttävät mainoksenestoa vaikka kyseinen toiminto on pakollinen jo pelkästään hai
Eikä näistä skripteistä tule valtaosa laudan käyttäjistä koskaan edes kuulemaan. Sopsylle on näköjään liian kova paikka jos 0.2% laudan nohevammista käyttäjistä osaa piilottaa sen paskamainokset :D
00:35

2 y 2 mo

Postataampa tännekin. Eli kirjoittamani Sopsyblokkeri alunperin palautelaudalta: // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.o
ei toimi enää?

2 y 2 mo

checkTampering() { const functions = ['setTimeout', 'setInterval', 'alert', 'confirm', 'getComputedStyle', 'parseInt', 'parseFloat']; for (const fn of functions) { const regex = new RegExp
>security reasons :--D
Pitää varmaan viljamin veljen interceptata koko Lauta.js lataaminen ja poistaa sieltä haittakoodit ennen suorittamista. (Tietoturvallisuus syistä tietysti)

2 y 2 mo

ei toimi enää?
Sopsy vahtii lankaa koko tiimin voimin ja koodaa kierron kierron välittömästi sellaisen havaittuaan.
Remove ads with Gold »
vihaan antikristusta vihaan antikristusta vihaan antikristusta vihaan antikristusta

2 y 2 mo

checkTampering() { const functions = ['setTimeout', 'setInterval', 'alert', 'confirm', 'getComputedStyle', 'parseInt', 'parseFloat']; for (const fn of functions) { const regex = new RegExp
eikö tuon ajamista pystyisi jotenkin estämään

2 y 2 mo

eikö tuon ajamista pystyisi jotenkin estämään
// ==UserScript== // @name Object.freeze patch // @description Muutosta odottaen... // @match https://ylilauta.org/* // @version 0.1 // @grant none // @run-at document-start // ==/UserScript== Object.freeze = function(obj){ if (obj.constructor.name == "Lauta"){ obj.checkTampering = function(){}; } } Toistaiseksi esimerkiksi näin

2 y 2 mo

// ==UserScript== // @name Object.freeze patch // @description Muutosta odottaen... // @match https://ylilauta.org/* // @version 0.1 // @grant none // @run-at document-start // ==/Us
Huuts

2 y 2 mo

// ==UserScript== // @name Object.freeze patch // @description Muutosta odottaen... // @match https://ylilauta.org/* // @version 0.1 // @grant none // @run-at document-start // ==/Us
Härskistä:D ja taas sopsy joutuu raivonvallassa puuskuttaa paikkausta:D

2 y 2 mo

// ==UserScript== // @name Object.freeze patch // @description Muutosta odottaen... // @match https://ylilauta.org/* // @version 0.1 // @grant none // @run-at document-start // ==/Us
antaisin kultaa, mutta se raha menisi tornijuutalaisen taskuun, joten en anna

2 y 2 mo

// ==UserScript== // @name Object.freeze patch // @description Muutosta odottaen... // @match https://ylilauta.org/* // @version 0.1 // @grant none // @run-at document-start // ==/Us
Huutista! Tää Sopsyn mainospakotus alkaa menemään pakkomielteen puolelle
Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at document-start // @grant none // ==/UserScript== (function() { const unnecessaryCode = [ { code: 'import OldBrowserWarning from "./Module/OldBrowserWarning.js";', replace: ''}, { code: '(new OldBrowserWarning()).testBrowser();', replace: ''}, { code: 'this.checkTampering()', replace: 'false'}, { code: `'Module/FrameLoader',`, replace: ''} ]; document.addEventListener("beforescriptexecute", async function(e) { const scriptSrc = e.target?.attributes?.src?.value; if (scriptSrc && scriptSrc.indexOf('Lauta.js') !== -1) { e.preventDefault(); e.stopPropagation(); e.target.remove(); console.log('Intercepted Lauta.js from executing (for security reasons)'); const srcDirectory = scriptSrc.replace('Lauta.js', ''); let lautaSrc = await (await (await fetch(scriptSrc)).blob()).text(); unnecessaryCode.forEach(line => lautaSrc = lautaSrc.replace(line.code, line.replace)); // Fix imports lautaSrc = lautaSrc.replace(`import('./' + module + '.js')`, `import('${srcDirectory}' + module + '.js')`); lautaSrc = lautaSrc.replace(`import('./Module/Action/' + module + '.js');`, `import('${srcDirectory}Module/Action/' + module + '.js')`); try { const ads = document.querySelectorAll('.a'); ads.forEach(ad => ad.remove()); eval(lautaSrc); } catch (err) { console.error(err); } } }); })()

2 y 2 mo

// ==UserScript== // @name Object.freeze patch // @description Muutosta odottaen... // @match https://ylilauta.org/* // @version 0.1 // @grant none // @run-at document-start // ==/Us
Nauris :D

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at
no nyt on jo aika tiukkaa settiä, kaikkea sitä oppiikin selaimympäristöistä laudalla. kunnon MITM puliveivausta, toimii paremmin kuin omat local overridet kun jutkut vaihtaa versionumeroita tunnin välein ja overriden polku vanhenee
Remove ads with Gold »

2 y 2 mo

>security reasons :--D
sattumalta alkoi security reasons näin 11 vuoden jälkeen kiinnostamaan juuri samaan aikaan kun käyttäjät alkaa kiertämään mainoksia
00:03

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at
"from executing (for security reasons)" :D:D
// ==UserScript== // @name Laajenna kaikki kuvat // @match https://ylilauta.org/* // @grant none // ==/UserScript== const functions = document.querySelector('.page-thread .thread-meta .functions') if (functions) { const button = document.createElement("button") button.classList.add("square-button") button.classList.add("icon-magnifier") button.addEventListener("click", e => { e.preventDefault() document.querySelectorAll('.post-file:not(.full) .jpg, post-file:not(.full) .png').forEach(img => img.click()) }) functions.appendChild(button) }
ei kun siis tähän . mitä vittua miten ei pari viikkoa sitten päivitetty selain tue jotain postauksen poistamista reeee
alertit vittuun https://stackoverflow.com/a/42052406/10958592
Onko maltan konttori jo kiinni tältä päivältä ko ei oo mitää paikkauksia tullunnna :D

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at
ei toimi (enää)? viestivalikon ainakin hajottaa
Tällä Alert Control -laajennuksella sain ainakin iteltäni jutkun alertit blockattua. https://chrome.google.com/webstore/detail/alert-control/ofjjanaennfbgpccfpbghnmblpdblbef
Ei taida juutalainen ymmärtää että siltä loppuu rahat ennemmin kuin nyymeiltä viitselijäisyys blokata patchit.

2 y 2 mo

Ei taida juutalainen ymmärtää että siltä loppuu rahat ennemmin kuin nyymeiltä viitselijäisyys blokata patchit.
Kummaltahan osapuolelta loppuisi konstit ensin, jos kissa-hiirileikki vielä jatkuu?
Remove ads with Gold »

2 y 2 mo

Kummaltahan osapuolelta loppuisi konstit ensin, jos kissa-hiirileikki vielä jatkuu?
eiköhän se juutalaiselta lopu ensin

2 y 2 mo

Kummaltahan osapuolelta loppuisi konstit ensin, jos kissa-hiirileikki vielä jatkuu?
Sipsiltä. Jos mikään muu ei toimi niin nyymit poistaa ne mainokset sivun lataamisen jälkeen käyttäen CSS.
Päivitetty versio homoilun estosta. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999 // @grant none // @run-at document-start // ==/UserScript== (function() { 'use strict'; console.log('sopsy on homo'); var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors; Object.getOwnPropertyDescriptors = function() { if (Error().stack.toString().indexOf('Lauta.checkTampering') === -1) { return getOwnPropertyDescriptors.apply(this, arguments); } throw 'neekeri'; } var assign = Object.assign; Object.assign = function() { if (Error().stack.toString().indexOf('FrameLoader.contentLoadFailed') === -1) { return assign.apply(this, arguments); } throw 'homo'; } })();

2 y 2 mo

Päivitetty versio homoilun estosta. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999 // @grant n
Sipsi tais vääntää uuden eston tolle kun alkoi tulemaan virheviestejä :D Mulla ei edes ole mainoksia oletuksena eikä mainosblokkerin pitäis täällä vaikuttaa.
Ihme ettei lanka ole jo poistunut

2 y 2 mo

Ihme ettei lanka ole jo poistunut
Miksi olisi? Userscript lankoja on ollut jo jotain 10 vuotta. Näiden tarkoitus on ollut joku ihan muu kuin postata mainostenkiertokoodeja.
00:24

2 y 2 mo

Sipsi tais vääntää uuden eston tolle kun alkoi tulemaan virheviestejä :D Mulla ei edes ole mainoksia oletuksena eikä mainosblokkerin pitäis täällä vaikuttaa.
Died satan. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.9999 // @grant none // @run-at document-start // ==/UserScript== (function() { console.log('sopsy on homo'); var assign = Object.assign; Object.assign = function() { if (Error().stack.toString().indexOf('FrameLoader.contentLoadFailed') === -1) { return assign.apply(this, arguments); } throw 'homo'; } var defineProperty = Object.defineProperty; Object.defineProperty = function() { if (Error().stack.toString().indexOf('new Lauta') !== -1 && arguments.length && arguments[0] && arguments[0].__proto__ && arguments[0].__proto__.checkTampering) { arguments[0].__proto__.checkTampering = function() {}; } return defineProperty.apply(this, arguments); } })();
Ei tää jutkis kyl ihan kaikil pytyil käy:D

2 y 2 mo

Died satan. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.9999 // @grant none // @run-at
Poistha!
Remove ads with Gold »

2 y 2 mo

Died satan. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.9999 // @grant none // @run-at
aika nopee toi sopsy kun taas hajos
Mikä oli muuten se paska minkä kun heitti ublockiin niin ylis meni koko näytölle?
Kiitos! Olette ihana mies <3

2 y 2 mo

aika nopee toi sopsy kun taas hajos
Natalialla toimii edelleen tuo + uBlock Origin.
00:02

2 y 2 mo

Natalialla toimii edelleen tuo + uBlock Origin.
Toimii. Tosin, muutama pieru jo näkynyt välistä, että eiköhän se Woody ole jo asian kimpussa.
tää on hyvä

2 y 2 mo

Kiitos! Olette ihana mies <3
ylilauta.org###navbar:style( max-width: 100% !important; ) lisäsin tämmösen, kun jäi harmittamaan noi palkin painikkeet puolessa välissä ruutua.
Nyt on kyllä harvinaisen jutkua menoa. Ehkä ne huhut pitääkin sittenkin paikkaansa että Woody on juutalainen.

2 y 2 mo

Nyt on kyllä harvinaisen jutkua menoa. Ehkä ne huhut pitääkin sittenkin paikkaansa että Woody on juutalainen.
Eivittu onko aito :DDDDDDDDDDDDDFF

2 y 2 mo

Nyt on kyllä harvinaisen jutkua menoa. Ehkä ne huhut pitääkin sittenkin paikkaansa että Woody on juutalainen.
Sopsy on myynyt isot osuudet laudasta hämäriin käsiin. Tämä alusta ei enää palvele käyttäjiensä intressejä, vaan sen tarkoitus on ainoastaan tehdä niin paljon voittoa kuin mahdollista.
HUOM! Turha lähteä leikkimään skriptien kanssa kissa-hiiri leikkiä. Blokatkaa DNS asetuksilla mainokset. Lisätietoja
Remove ads with Gold »

2 y 2 mo

Nyt on kyllä harvinaisen jutkua menoa. Ehkä ne huhut pitääkin sittenkin paikkaansa että Woody on juutalainen.
Blokkasin mainokset niin Mr. Green tuli koputtelemaan sateenvarjolla ikkunaan.
Kiitos. Lisään tämän tuohon lankaan.
Woody päivitti koodia taas
00:06

2 y 2 mo

Woody päivitti koodia taas

2 y 2 mo

Toimii. Tosin, muutama pieru jo näkynyt välistä, että eiköhän se Woody ole jo asian kimpussa.
Vituttaa lainata omaa postaustani, mutta nyt se jutku teki sen taas!

2 y 2 mo

Woody päivitti koodia taas

2 y 2 mo

Vituttaa lainata omaa postaustani, mutta nyt se jutku teki sen taas!
Täältä apuja

2 y 2 mo

Täältä apuja
Muuten hyvä mutta tarvin ublokkia muuhunkin kuin mainosten estoon.

2 y 2 mo

Vituttaa lainata omaa postaustani, mutta nyt se jutku teki sen taas!
Skripti kasvaa... Lisää uBlock originissa: Dashboard -> My Filters: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.9999 // @grant GM_xmlhttpRequest // @grant GM_addElement // @run-at document-body // @connect static.ylilauta.org // ==/UserScript== (function() { console.log('sopsy on homo'); var lauta = Array.from(document.querySelectorAll('script[src]')).filter(s => s.src.indexOf('/Lauta.js') !== -1); var nonce = Array.from(document.querySelectorAll('script[nonce]')).map(s => s.nonce); if (nonce.length) { nonce = nonce[0]; } else { throw 'No nonce'; } if (lauta.length) { lauta[0].parentElement.removeChild(lauta[0]); var src = lauta[0].src; var slash = src.lastIndexOf('/'); var path = src.substring(0, slash) + '/'; GM_xmlhttpRequest({ method: 'GET', url: src, onload: function(response) { var text = response.responseText; text = text.replaceAll(/import (.+) from ".\/([^"]+)"/g, 'import $1 from "' + path + '$2"'); text = text.replaceAll(/(\.\/)?Module\//g, 'Module/'); text = text.replaceAll(/(\.\/)?Library\//g, 'Library/'); text = text.replaceAll(/import\('\.\/' \+ module/g, 'import("' + path + '" + module'); text = text.replaceAll(/if \(this\.checkTampering\(\)\)/g, 'if ("neekeri" !== "neekeri")'); text = text.replaceAll(/import\('Module\/Action/g, "import('" + path + "Module/Action"); GM_addElement('script', {type: 'module', nonce, textContent: text}); } }); } var assign = Object.assign; Object.assign = function() { if (Error().stack.toString().indexOf('FrameLoader.contentLoadFailed') === -1) { return assign.apply(this, arguments); } throw 'homo'; } })();

2 y 2 mo

Skripti kasvaa... Lisää uBlock originissa: Dashboard -> My Filters: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri /
Hmm silti pukkaa alerttia tai toastia?

2 y 2 mo

Hmm silti pukkaa alerttia tai toastia?
Blokkasitko Lauta.js:n tällä tai muulla tavalla? ||static.ylilauta.org/js/*/Lauta.js$script,1p
Remove ads with Gold »

2 y 2 mo

Blokkasitko Lauta.js:n tällä tai muulla tavalla? ||static.ylilauta.org/js/*/Lauta.js$script,1p
tällä tavalla juur

2 y 2 mo

tällä tavalla juur
Mitä tulee dev consoliin? Kuvassa oikeanlainen tuloste.

2 y 2 mo

Mitä tulee dev consoliin? Kuvassa oikeanlainen tuloste.

2 y 2 mo

Onpa omituista. https://static.ylilauta.org/js/3.18/Lauta.js palauttaa sopivat CORS-otsakkeet, joten kutsun ei pitäisi sen takia epäonnistua. Toinen outo juttu on että viesti epäonnistuneesta CORS-kutsusta tulee jo ennen kuin Tampermonkey userscript aktivoituu (viesti "sopsy on homo").

2 y 2 mo

Onpa omituista. https://static.ylilauta.org/js/3.18/Lauta.js palauttaa sopivat CORS-otsakkeet, joten kutsun ei pitäisi sen takia epäonnistua. Toinen outo juttu on että viesti epäonnistuneesta CORS-kutsusta tulee
Chromella toimii itelläki hyvin mutta firefoxilla ei

2 y 2 mo

Chromella toimii itelläki hyvin mutta firefoxilla ei
Pikku-Natalian ohjelmointitoimiston ainoa virallisesti tuettu selain on Google Chrome.
Sairas ukko alkaa olla
Kännykällä?
Huutista tosiaan kun ajattelee asiaa koodikatselmoinnin näkökulmasta :D Ja pahoittelut siitä etten ole jaksanut päivittää skriptiä, oma mukavuudenhalu ajaa ohi niin ettei viitsi julkaista omaa nykyistä ratkaisua kun on niin helppo, että Sopsy kuitenkin patchaa sen heti. Voisi kyllä ihan mielenkiinnon vuoksi viritellä jonkun erillisen MutationObserver-pohjaisen ratkaisun ja sillä blokata ja kuohia Lautajäsän lataamisen.

2 y 2 mo

tää on hyvä ylilauta.org###navbar:style( max-width: 100% !important; ) lisäsin tämmösen, kun jäi harmittamaan noi palkin painikkeet puolessa välissä ruutua.
suosittelen laajentamaan koko sivun laittamalla ylilauta.org##:root:style( --body-max-width: 100% !important; ) joku voi toki korjata jos kirjoitin pieleen, itse käytän stylusta
Remove ads with Gold »
Viidakon laki sanoo että asiakassovellusta tulee kohdella kuin rikollista. Ei voi luottaa mihinkään mitä se tekee, koska kaikki on käyttäjän muokattavissa. Tämän takia bäkki laskee ja frontti piirtää. On myös syy miksi sopsyn estot jäsässä eivät koskaan voi toimia
Popuppia puskee vaikka on hosts tiedoston kikat päällä eikä ublockia koko sivulla käytössä ":D". Hyvä lauta.. vittu!
Kannattaisiko lopettaa paskavammaisen FF käyttö. Siinähän se vika on.

2 y 2 mo

Kannattaisiko lopettaa paskavammaisen FF käyttö. Siinähän se vika on.
Ei, kyllä kunnon ratkasun pitää toimia selaimesta riippumat:3
Vihdoinkin!
Tämän mainospakotustaistelun seurauksena jaksoin vihdoin puhelimessakin vaihtaa chromen firefoxiin että saa sielläkin mainokset estettyä
test

2 y 2 mo

Tämän mainospakotustaistelun seurauksena jaksoin vihdoin puhelimessakin vaihtaa chromen firefoxiin että saa sielläkin mainokset estettyä
Tää. Mietin myös muita keinoja tehdä kiusaa ylläpidolle ja ylilaudalle.

2 y 2 mo

Ei, kyllä kunnon ratkasun pitää toimia selaimesta riippumat:3
Pian FF lopettaa kuitenkin ja pääsee eroon vammaisesta optimoinnista joka selaimella. Musta paras jos riittää toimia Chromella. Sitä kaikki käyttää.
pyydetään skripti, joka poistaa tuon jättimäisen bannerin tuosta laudan yläosasta. kokeilin itse, mutta omat taidot eivät riitä mihinkään. käytössä tällä hetkellä Sopsyn homoilublokkeri. edit: se toimii sittenkin! // ==UserScript== // @name Bannerin poistaja // @namespace http://tampermonkey.net/ // @version 0.1 // @description poistaa laudan yläosasta jäätävän bannerin // @match https://ylilauta.org/* // @grant none // @connect static.ylilauta.org // ==/UserScript== (function() { console.log("testi") function removeElementsByClass(className){ const elements = document.getElementsByClassName(className); while(elements.length > 0){ elements[0].parentNode.removeChild(elements[0]); } } removeElementsByClass('a'); })();
Remove ads with Gold »

2 y 2 mo

pyydetään skripti, joka poistaa tuon jättimäisen bannerin tuosta laudan yläosasta. kokeilin itse, mutta omat taidot eivät riitä mihinkään. käytössä tällä hetkellä Sopsyn homoilublokkeri. edit: se toimii sittenkin! // ==
lisää nää ublockkii tai käytä sitä pickkeriä ! 2022-04-10 https://ylilauta.org ylilauta.org##.thread-replies > div.h.a ylilauta.org###content > div.h.a ylilauta.org##.h.a
Lauta on pelkkä vitsi. Ja ei, en käytä evästeitä.

2 y 2 mo

Lauta on pelkkä vitsi. Ja ei, en käytä evästeitä.
tää toimii itellä firefoxissa

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at
ublockin kanssa

2 y 2 mo

lisää nää ublockkii tai käytä sitä pickkeriä ! 2022-04-10 https://ylilauta.org ylilauta.org##.thread-replies > div.h.a ylilauta.org###content > div.h.a ylilauta.org##.h.a
entäpäs tuosta pirun ilmoituksesta?

2 y 2 mo

Lauta on pelkkä vitsi. Ja ei, en käytä evästeitä.

2 y 2 mo

entäpäs tuosta pirun ilmoituksesta?
itse sain ilmoitukset häviämään

2 y 2 mo

Skripti kasvaa... Lisää uBlock originissa: Dashboard -> My Filters: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri /
skriptillä, helpommasta en tiedä

2 y 2 mo

Skripti kasvaa... Lisää uBlock originissa: Dashboard -> My Filters: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri /
Kiitos tästä.

2 y 2 mo

Kiitos tästä.
Iloinen!
postaa uuteen lankaan
varoitus: sopsy kattelee tätä lankaa kiimassa ja runkkaa

2 y 2 mo

varoitus: sopsy kattelee tätä lankaa kiimassa ja runkkaa
sopsy on homojuutalainen
Remove ads with Gold »

2 y 2 mo

varoitus: sopsy kattelee tätä lankaa kiimassa ja runkkaa
Tuossa langassa se jutkuili asiasta eilen

2 y 2 mo

Skripti kasvaa... Lisää uBlock originissa: Dashboard -> My Filters: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri /
toimii mutta kaikki napit lakkaa toimimasta ja videot aukee uuteen välilehteen eikä vaan suoraan

2 y 2 mo

toimii mutta kaikki napit lakkaa toimimasta ja videot aukee uuteen välilehteen eikä vaan suoraan
Käytätkö Firefoxia? Ei kuulemma toimi Firefoxissa. Uusi versio entistä kehittyneemmän homoilun estoon. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999 // @grant GM_xmlhttpRequest // @grant GM_addElement // @run-at document-body // @connect static.ylilauta.org // ==/UserScript== (function() { console.log('sopsy on homo'); var lauta = Array.from(document.querySelectorAll('script[src]')).filter(s => s.src.indexOf('/Lauta.js') !== -1); var nonce = Array.from(document.querySelectorAll('script[nonce]')).map(s => s.nonce); if (nonce.length) { nonce = nonce[0]; } else { throw 'No nonce'; } if (lauta.length) { lauta[0].parentElement.removeChild(lauta[0]); var src = lauta[0].src; var slash = src.lastIndexOf('/'); var path = src.substring(0, slash) + '/'; GM_xmlhttpRequest({ method: 'GET', url: src, onload: function(response) { var text = response.responseText; text = text.replaceAll(/constructor\(\) \{/g, 'constructor() { Object.defineProperty(this, "ads", { get: function() { return {nonce: this.nonce}; } });'); text = text.replaceAll(/import (.+) from ".\/([^"]+)"/g, 'import $1 from "' + path + '$2"'); text = text.replaceAll(/(\.\/)?Module\//g, 'Module/'); text = text.replaceAll(/(\.\/)?Library\//g, 'Library/'); text = text.replaceAll(/import\('\.\/' \+ module/g, 'import("' + path + '" + module'); text = text.replaceAll(/if \(this\.checkTampering\(\)\)/g, 'if ("neekeri" !== "neekeri")'); text = text.replaceAll(/if \(this\.unloading\)/g, 'debugger; if(false)'); text = text.replaceAll(/import\('Module\/Action/g, "import('" + path + "Module/Action"); GM_addElement('script', {type: 'module', nonce, textContent: text}); } }); } var assign = Object.assign; Object.assign = function() { if (Error().stack.toString().indexOf('FrameLoader.contentLoadFailed') === -1) { return assign.apply(this, arguments); } throw 'homo'; } })();

2 y 2 mo

Käytätkö Firefoxia? Ei kuulemma toimi Firefoxissa. Uusi versio entistä kehittyneemmän homoilun estoon. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2
käytän joo, tossakin sama ongelma. firefoxiin siirryin kun chromessa alko näkyä mainokset youtubessa vaikka oli ublock origin sun muut lisäosat

2 y 2 mo

toimii mutta kaikki napit lakkaa toimimasta ja videot aukee uuteen välilehteen eikä vaan suoraan

2 y 2 mo

Käytätkö Firefoxia? Ei kuulemma toimi Firefoxissa. Uusi versio entistä kehittyneemmän homoilun estoon. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2
sama ongelma, käytössä uusin skripti ja chrome

2 y 2 mo

sama ongelma, käytössä uusin skripti ja chrome
Unohdin mainita että tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p

2 y 2 mo

Unohdin mainita että tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p
nyt toimii, piti vain estää bannerit skriptin sijaan ublockilla

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at

2 y 2 mo

Käytätkö Firefoxia? Ei kuulemma toimi Firefoxissa. Uusi versio entistä kehittyneemmän homoilun estoon. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2
Ei taida toimia enää? Toastia pukkaa, vaikka vielä aamulla toimi.

2 y 2 mo

Ei taida toimia enää? Toastia pukkaa, vaikka vielä aamulla toimi.
Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.99999 // @grant GM_xmlhttpRequest // @grant GM_addElement // @run-at document-body // @connect static.ylilauta.org // ==/UserScript== (function() { console.log('sopsy on homo'); var lauta = Array.from(document.querySelectorAll('script[src]')).filter(s => s.src.indexOf('/Lauta.js') !== -1); var nonce = Array.from(document.querySelectorAll('script[nonce]')).map(s => s.nonce); if (nonce.length) { nonce = nonce[0]; } else { throw 'No nonce'; } if (lauta.length) { lauta[0].parentElement.removeChild(lauta[0]); var src = lauta[0].src; var slash = src.lastIndexOf('/'); var path = src.substring(0, slash) + '/'; GM_xmlhttpRequest({ method: 'GET', url: src, onload: function(response) { var text = response.responseText; text = text.replaceAll(/import (.+) from ".\/([^"]+)"/g, 'import $1 from "' + path + '$2"'); text = text.replaceAll(/\bimport\(/g, 'negroImport('); text = text.replaceAll(/if \(this\.checkTampering\(\)\)/g, 'if ("neekeri" !== "neekeri")'); text = text.replaceAll(/if \(this\.unloading\)/g, 'debugger; if(false)'); text = text.replaceAll(/\bwindow\.ads\b/g, "{...window.ads, hasAds: false, placements: }"); text = "function negroImport(url) { return import('" + path + "' + url.replaceAll(/^\\.\\//g, '')); }\n" + text; GM_addElement('script', {type: 'module', nonce, textContent: text}); } }); } var assign = Object.assign; Object.assign = function() { if (Error().stack.toString().indexOf('FrameLoader.contentLoadFailed') === -1) { return assign.apply(this, arguments); } throw 'homo'; } })();
Remove ads with Gold »

2 y 2 mo

Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScr
Peisetti nataliapostaaja pelastaa lautailukokemuksen jälleen - arvostan.

2 y 2 mo

Peisetti nataliapostaaja pelastaa lautailukokemuksen jälleen - arvostan.
Kiltti ja iloinen :3

2 y 2 mo

Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScr
Antaisin kultiksen jos homosopsy ei saisi siitä tuloja, olette hieno mies.
On kyllä ihan vitun vajaa tää jutku :D kuinka se jaksaa tätä leikittelyä? rahan ahne paska
Noniin, äijät! Teidän urotekoja taas vaaditaan. Rakastan teitä, make it so!
hyla
Sopsyltä kiitettävää omistautumista asialle. Näköjään työajan Maltan toimistossa voi käyttää nyymien kanssa kissa-ja hiirileikittelyyn siitä, näkyvätkö mainokset noin 0.2% laudan väestä jotka osaavat skriptejä käyttää.

2 y 2 mo

Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScr
Mistä mahtaa johtua kun nämä lätkäsee päälle, niin kuvat avautuu toiselle välilehdelle ja langan viesteissä vastaukset eivät näytä viestien sisältöä vaan joutuu painamaan siitä että se vie vastaukseen.

2 y 2 mo

Mistä mahtaa johtua kun nämä lätkäsee päälle, niin kuvat avautuu toiselle välilehdelle ja langan viesteissä vastaukset eivät näytä viestien sisältöä vaan joutuu painamaan siitä että se vie vastaukseen.
Homojuutalainen teki taas korjauksen :d

2 y 2 mo

Sopsyltä kiitettävää omistautumista asialle. Näköjään työajan Maltan toimistossa voi käyttää nyymien kanssa kissa-ja hiirileikittelyyn siitä, näkyvätkö mainokset noin 0.2% laudan väestä jotka osaavat skriptejä käyttää.
Tää ei vittu :DD ei kai siinä ku luuserin rahat tulee täysin jostain kasinoiden mainostamisesta nii aikaa on tällaiseen

2 y 2 mo

Mistä mahtaa johtua kun nämä lätkäsee päälle, niin kuvat avautuu toiselle välilehdelle ja langan viesteissä vastaukset eivät näytä viestien sisältöä vaan joutuu painamaan siitä että se vie vastaukseen.

2 y 2 mo

Homojuutalainen teki taas korjauksen :d Tää ei vittu :DD ei kai siinä ku luuserin rahat tulee täysin jostain kasinoiden mainostamisesta nii aikaa on tällaiseen
Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.99999 // @grant GM_xmlhttpRequest // @grant GM_addElement // @run-at document-body // @connect static.ylilauta.org // ==/UserScript== (function() { console.log('sopsy on homo'); var lauta = Array.from(document.querySelectorAll('script[src]')).filter(s => s.src.indexOf('/Lauta.js') !== -1); if (lauta.length) { lauta[0].parentElement.removeChild(lauta[0]); var src = lauta[0].src; var slash = src.lastIndexOf('/'); var path = src.substring(0, slash) + '/'; GM_xmlhttpRequest({ method: 'GET', url: src, onload: function(response) { var text = response.responseText; text = text.replaceAll(/import (.+) from ".\/([^"]+)"/g, 'import $1 from "' + path + '$2"'); text = text.replaceAll(/\bimport\(/g, 'negroImport('); text = text.replaceAll(/if \(this\.checkTampering\(\)\)/g, 'if ("neekeri" !== "neekeri")'); text = text.replaceAll(/if \(this\.unloading\)/g, 'debugger; if(false)'); text = text.replaceAll(/\bwindow\.ads\b/g, "{...window.ads, hasAds: false, placements: }"); text = "function negroImport(url) { return import('" + path + "' + url.replaceAll(/^\\.\\//g, '')); }\n" + text; GM_addElement('script', {type: 'module', textContent: text}); } }); } var assign = Object.assign; Object.assign = function() { if (Error().stack.toString().indexOf('FrameLoader.contentLoadFailed') === -1) { return assign.apply(this, arguments); } throw 'homo'; } })();
Remove ads with Gold »

2 y 2 mo

Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // =
alfa Sopsy kun luet tätä, kys.

2 y 2 mo

Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // =
Vittu taas joutuu lautailee. Olipahan muutaman tunnin tauko taas tästäkin
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA >D vitun runkkari sopsy hahhahahaah tapa ittes

2 y 2 mo

alfa Sopsy kun luet tätä, kys.
Ei tää tähän lopu. On tämmöstä kiusantekoa puolin ja toisin. Ehkä sopsy väsyy tähän jossain vaiheessa. Se että käyttäjät väsyis kiertoteiden tekemiseen en usko. Ei ole tapahtunut vielä internetin koko historian aikana joten se että tapahtuisi nyt just tän laudan aikana on aika mahdoton ajatus. Joten loogisesti tässä siis odotellaan että sopsy jossain vaiheessa antaa vaan olla. En tiedä kestääkö se viikkoja, kuukausia vai vuosia. Saa nähdä.

2 y 2 mo

Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // =
Onkohan jo patchattu. Ei toimi vaikka aiemmat versiot toimi.
Haluutteko kyrpää

2 y 2 mo

Uusi versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // =
Vieläkin on ongelmana tuo kuvien avaaminen toiselle välilehdelle yms. Ilmeisesti se on tuo lauta.jsn blokkaaminen joka sen aiheuttaa. Onko tähän jotain ratkaisua? Selaimena kuitenkin Chrome
Joo Tampermonkeyssa on. Poistelin uBlock originistakin kaiken muun roskan mutta ei auttanut, eikä mulla Tampermonkeyssakaan ole muuta kuin tuo skripti. Jotain tuo .js tekee mun selaimelle ettei mikään nappi laudalla enää toimi. Millä versiolla sun Chrome pyörii?

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at
Antaa seuraavan errorin jos käyttää tätä (kyllä, Firefox käytössä): TypeError: NetworkError when attempting to fetch resource. ja osoittaa riville 23: let lautaSrc = await (await (await fetch(scriptSrc)).blob()).text(); Mistä lie johtuu, mutta ei tykkää tuosta fetchistä.

2 y 2 mo

Antaa seuraavan errorin jos käyttää tätä (kyllä, Firefox käytössä): TypeError: NetworkError when attempting to fetch resource. ja osoittaa riville 23: let lautaSrc = await (await (await fetch(scriptSrc)).blob(
Ei toimi firefoxil ylipäätään tuo
Remove ads with Gold »

2 y 2 mo

Vieläkin on ongelmana tuo kuvien avaaminen toiselle välilehdelle yms. Ilmeisesti se on tuo lauta.jsn blokkaaminen joka sen aiheuttaa. Onko tähän jotain ratkaisua? Selaimena kuitenkin Chrome

2 y 2 mo

Onkohan jo patchattu. Ei toimi vaikka aiemmat versiot toimi.
Saattoi löytyä syy miksi joillakin toimii ja joillakin ei. Koneen tehoista ja sivun koosta riippuen Tampermonkey skripti ajettiin liian aikaisin. Alla viivästetty skripti. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999999 // @grant GM_xmlhttpRequest // @grant GM_addElement // @run-at document-end // @connect static.ylilauta.org // ==/UserScript== (function() { console.log('sopsy on homo'); var lauta = Array.from(document.querySelectorAll('script[src]')).filter(s => s.src.indexOf('/Lauta.js') !== -1); if (lauta.length) { lauta[0].parentElement.removeChild(lauta[0]); var src = lauta[0].src; var slash = src.lastIndexOf('/'); var path = src.substring(0, slash) + '/'; GM_xmlhttpRequest({ method: 'GET', url: src, onload: function(response) { var text = response.responseText; text = text.replaceAll(/import (.+) from ".\/([^"]+)"/g, 'import $1 from "' + path + '$2"'); text = text.replaceAll(/\bimport\(/g, 'negroImport('); text = text.replaceAll(/if \(this\.checkTampering\(\)\)/g, 'if ("neekeri" !== "neekeri")'); text = text.replaceAll(/if \(this\.unloading\)/g, 'debugger; if(false)'); text = text.replaceAll(/\bwindow\.ads\b/g, "{...window.ads, hasAds: false, placements: }"); text = "function negroImport(url) { return import('" + path + "' + url.replaceAll(/^\\.\\//g, '')); }\n" + text; GM_addElement('script', {type: 'module', textContent: text}); } }); } var assign = Object.assign; Object.assign = function() { if (Error().stack.toString().indexOf('FrameLoader.contentLoadFailed') === -1) { return assign.apply(this, arguments); } throw 'homo'; } })();
Hyvin toimii t. eri
Laitoit jo kuukausi sitten täyttyneen langan lukkoon ja kysyit /o/:n etusivun korkeimpana olevaan lankaan linkkiä, gg wp.

2 y 2 mo

Saattoi löytyä syy miksi joillakin toimii ja joillakin ei. Koneen tehoista ja sivun koosta riippuen Tampermonkey skripti ajettiin liian aikaisin. Alla viivästetty skripti. Tampermonkey-skriptin lisäksi h
Pitäisikö tämän toimia Chromella? Lisäsin scriptin, mutta sen jälkeen ei näytä notifikaatio popup tai viesti reply painaminen toimia
Juu, ublockin filtereistä löytyy
joka päivä se kusipää jaksaa

2 y 2 mo

joka päivä se kusipää jaksaa
Juuh, elic's taas korjattu versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/Lauta.js$script,1p // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999999 // @grant GM_xmlhttpRequest // @grant GM_addElement // @run-at document-end // @connect static.ylilauta.org // ==/UserScript== (function() { console.log('sopsy on homo'); var lauta = Array.from(document.querySelectorAll('script[src]')).filter(s => s.src.indexOf('/Lauta.js') !== -1); if (lauta.length) { var src = lauta[0].src; var slash = src.lastIndexOf('/'); var path = src.substring(0, slash) + '/'; GM_xmlhttpRequest({ method: 'GET', headers: {'sec-fetch-dest': 'script', 'sec-fetch-site': 'same-site', 'origin': 'https://ylilauta.org'}, url: src, nocache: true, onload: function(response) { var text = response.responseText; text = text.replaceAll(/import (.+) from ".\/([^"]+)"/g, 'import $1 from "' + path + '$2"'); text = text.replaceAll(/\bimport\(/g, 'negroImport('); text = text.replaceAll(/if \(this\.checkTampering\(\)\)/g, 'if ("neekeri" !== "neekeri")'); text = text.replaceAll(/if \(this\.unloading\)/g, 'debugger; if(false)'); text = text.replaceAll(/\bwindow\.ads\b/g, "{...window.ads, hasAds: false, placements: }"); text = "function negroImport(url) { return import('" + path + "' + url.replaceAll(/^\\.\\//g, '')); }\n" + text; GM_addElement('script', {type: 'module', textContent: text}); } }); } var assign = Object.assign; Object.assign = function() { if (Error().stack.toString().indexOf('FrameLoader.contentLoadFailed') === -1) { return assign.apply(this, arguments); } throw 'homo'; } })();

2 y 2 mo

Juuh, elic's taas korjattu versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/La
Heti menee toiminnot lukkoon, kun tuon ublock värssyn laittaa päälle.

2 y 2 mo

Heti menee toiminnot lukkoon, kun tuon ublock värssyn laittaa päälle.
Nii tekee tosiaa. Jotain se jutku on taas menny tekemää

2 y 2 mo

Heti menee toiminnot lukkoon, kun tuon ublock värssyn laittaa päälle.

2 y 2 mo

Nii tekee tosiaa. Jotain se jutku on taas menny tekemää
No entä nyt?

2 y 2 mo

Juuh, elic's taas korjattu versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/La
muokattu
Remove ads with Gold »

2 y 2 mo

No entä nyt? muokattu
Toimii

2 y 2 mo

Toimii
Hurraa!

2 y 2 mo

Hurraa!
Mr. Jutku on kyllä jo varmaan hakkaamassa tattia päivityksesi suhteen.

2 y 2 mo

Hurraa!
Oot paras nyymi. Sipsi on paskin nyymi

2 y 2 mo

Juuh, elic's taas korjattu versio. Tampermonkey-skriptin lisäksi homoseksuaalin Lauta.js:n lataaminen pitää estää esim. uBlock originilla: ! 2022-04-09 https://ylilauta.org ||static.ylilauta.org/js/*/La
Kiitos paljon. Pistäisin kultista tulemaan jos niitä saisi ostettua ilman, että rahat menisivät kusimulkku sopsyn pohjattomiin taskuihin.
00:01

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at
Tää on aivan 5/5. Sopsy totaalisen servattu

2 y 2 mo

Hurraa!
Sankari jota emme ansaitse, mutta tarvitsemme. Jutku rikkoi juuri uusimman scriptisi!
Hyvä tietää että Maltan toimistossa painetaan pitkää päivää myös pääsiäisenä jottei kukaan pääse karkuun Mr.Greeniltä :)
00:03

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at

2 y 2 mo

Tää on aivan 5/5. Sopsy totaalisen servattu
ei toimi enää kiitos jutkusopsy! paskaa pääsiäistä sopsylle!
Vittu mikä työmaa, toivottavasti sopsy päätyy ristille.
Remove ads with Gold »

2 y 2 mo

Sankari jota emme ansaitse, mutta tarvitsemme. Jutku rikkoi juuri uusimman scriptisi!

2 y 2 mo

ei toimi enää kiitos jutkusopsy! paskaa pääsiäistä sopsylle!
Sipsi pisti vähän uutta tekniikkaa kehiin. Poistakaa Lauta.js:n blokkaus ja käyttäkää päivitettyä Tampermonkey-skriptiä. Lisäksi muuttakaa Tampermonkeyn asetuksia näin: Dashboard -> Settings -> Config Mode: Advanced -> Inject Mode: Instant. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999999999 // @run-at document-start // ==/UserScript== (function() { console.log('sopsy on homo'); Object.getOwnPropertyDescriptors = new Proxy(Object.getOwnPropertyDescriptors, { apply: function (target, thisArg, args) { let descriptors = target.apply(thisArg, args); if (Error().stack.indexOf('at https://ylilauta.org/') !== -1 && descriptors) { if (descriptors.error && descriptors.error.get) { delete descriptors.error.get; } else if (descriptors.createElement) { delete descriptors.createElement; } } return descriptors; } }); document.createElement = new Proxy(document.createElement, { apply: function (target, thisArg, args) { if (Error().stack.indexOf('FrameLoader.contentLoadFailed') === -1) { return target.apply(thisArg, args); } throw 'homo'; } }); Function.prototype.toString = new Proxy(Function.prototype.toString, { apply: function (target, thisArg, args) { if (thisArg === Function.prototype.toString) { return 'function toString() { [native code] }' } if (thisArg === Object.getOwnPropertyDescriptors) { return 'function getOwnPropertyDescriptors() { [native code] }'; } if (thisArg === document.createElement) { return 'function createElement() { [native code] }'; } return target.apply(thisArg, args); } }); })();

2 y 2 mo

Sipsi pisti vähän uutta tekniikkaa kehiin. Poistakaa Lauta.js:n blokkaus ja käyttäkää päivitettyä Tampermonkey-skriptiä. Lisäksi muuttakaa Tampermonkeyn asetuksia näin: Dashboard -> Settings -> Config Mod
Kiitos arvon nyymi, ota tää

2 y 2 mo

Sipsi pisti vähän uutta tekniikkaa kehiin. Poistakaa Lauta.js:n blokkaus ja käyttäkää päivitettyä Tampermonkey-skriptiä. Lisäksi muuttakaa Tampermonkeyn asetuksia näin: Dashboard -> Settings -> Config Mod
Ootko muuten kokeillu saada koodia luulemaan että käyttäjällä olisi kultatili ja asetuksista mainokset pois? T. en oo jaksanu lukea noita sipsin koodeja kun ei kosketa itseäni

2 y 2 mo

Sipsi pisti vähän uutta tekniikkaa kehiin. Poistakaa Lauta.js:n blokkaus ja käyttäkää päivitettyä Tampermonkey-skriptiä. Lisäksi muuttakaa Tampermonkeyn asetuksia näin: Dashboard -> Settings -> Config Mod
Ja taas Sipsi on servattu! Toimii. Ajetaan tämä mies turmioon ja perikatoon.

2 y 2 mo

Sipsi pisti vähän uutta tekniikkaa kehiin. Poistakaa Lauta.js:n blokkaus ja käyttäkää päivitettyä Tampermonkey-skriptiä. Lisäksi muuttakaa Tampermonkeyn asetuksia näin: Dashboard -> Settings -> Config Mod
en saa toimimaan firefoxissa

2 y 2 mo

Ootko muuten kokeillu saada koodia luulemaan että käyttäjällä olisi kultatili ja asetuksista mainokset pois? T. en oo jaksanu lukea noita sipsin koodeja kun ei kosketa itseäni
Kultatilin tarkistus tehdään varmaankin palvelimen puolella, joten siihen ei oikein pääse kiinni.

2 y 2 mo

Kultatilin tarkistus tehdään varmaankin palvelimen puolella, joten siihen ei oikein pääse kiinni.
Ainakaan noita homoilujäsiä ei ladata jos on jutkutili, mutta tarkemmin en tosiaan tiedä miten tuo toimii.

2 y 2 mo

Sipsi pisti vähän uutta tekniikkaa kehiin. Poistakaa Lauta.js:n blokkaus ja käyttäkää päivitettyä Tampermonkey-skriptiä. Lisäksi muuttakaa Tampermonkeyn asetuksia näin: Dashboard -> Settings -> Config Mod
Sopsyn homoilu päivittyi taas, kaikki JS toiminnot on taas disabloitu

2 y 2 mo

Sopsyn homoilu päivittyi taas, kaikki JS toiminnot on taas disabloitu
Poistitko aiemmin tarvitun Lauta.js:n blokkauksen?

2 y 2 mo

Poistitko aiemmin tarvitun Lauta.js:n blokkauksen?
Poistin joo
Remove ads with Gold »

2 y 2 mo

Poistin joo
Jahaa, siellä oli jotain muuta kans. Otin koko ublock listan tyhjäksi ja nyt taas pelaa.

2 y 2 mo

Sipsi pisti vähän uutta tekniikkaa kehiin. Poistakaa Lauta.js:n blokkaus ja käyttäkää päivitettyä Tampermonkey-skriptiä. Lisäksi muuttakaa Tampermonkeyn asetuksia näin: Dashboard -> Settings -> Config Mod
en tiedä lankesinko trolliin , mut mulla tulee tätä käytettäessä kaksi virheilmoitusta, joista toisessa lukee "istunto poistettu käytöstä"

2 y 2 mo

en tiedä lankesinko trolliin , mut mulla tulee tätä käytettäessä kaksi virheilmoitusta, joista toisessa lukee "istunto poistettu käytöstä"
Onko sulla jotain muuta päällä? Itellä tuli noin kunnes otin alert controllin pois päältä ja nyt toimii. Testaile ottaa mitä sulla on asennettuna pois päältä kunnes toimii
No siinä ei kauaa mennyt. Maltan toimistolla seurataan lankaa silmä kovana muna kädessä koko tiimin voimin :)

2 y 2 mo

No siinä ei kauaa mennyt. Maltan toimistolla seurataan lankaa silmä kovana muna kädessä koko tiimin voimin :)
Korjattu versio. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999999999 // @run-at document-start // ==/UserScript== (function() { console.log('sopsy on homo'); Object.getOwnPropertyDescriptors = new Proxy(Object.getOwnPropertyDescriptors, { apply: function (target, thisArg, args) { if (args.length === 0) { let e = Error(); e.stack = 'TypeError: Cannot convert undefined or null to object\n at Function.getOwnPropertyDescriptors (<anonymous>)\n at https://ylilauta.org/satunnainen/:9:28'; throw e; } let descriptors = target.apply(thisArg, args); if (Error().stack.indexOf('at https://ylilauta.org/') !== -1 && descriptors) { if (descriptors.error && descriptors.error.get) { delete descriptors.error.get; } else if (descriptors.createElement) { delete descriptors.createElement; } } return descriptors; } }); document.createElement = new Proxy(document.createElement, { apply: function (target, thisArg, args) { if (Error().stack.indexOf('FrameLoader.contentLoadFailed') === -1) { return target.apply(thisArg, args); } throw 'homo'; } }); Function.prototype.toString = new Proxy(Function.prototype.toString, { apply: function (target, thisArg, args) { if (thisArg === Function.prototype.toString) { return 'function toString() { [native code] }' } if (thisArg === Object.getOwnPropertyDescriptors) { return 'function getOwnPropertyDescriptors() { [native code] }'; } if (thisArg === document.createElement) { return 'function createElement() { [native code] }'; } return target.apply(thisArg, args); } }); })();
00:09

2 y 2 mo

Korjattu versio. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999999999 // @run-at documen
Ja taas toimii. On se kyl nopee

2 y 2 mo

Korjattu versio. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999999999 // @run-at documen
Tämä on sotaa.

2 y 2 mo

Korjattu versio. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999999999 // @run-at documen
Alfa. Sopsy, vedä itsesi jo jojoon vitun likainen olmi.

2 y 2 mo

Alfa. Sopsy, vedä itsesi jo jojoon vitun likainen olmi.
Missä päin tätä Olmi nimeä käytetään negatiivisessa valossa? Lisäksi, oletko Casey?
Varmaan ei toimi mobiili chromessa.
Remove ads with Gold »

2 y 2 mo

Varmaan ei toimi mobiili chromessa.
Mulla tulee sama firefoxilla läppärillä

2 y 2 mo

Mulla tulee sama firefoxilla läppärillä
No sitten ei varmaan toimi myöskään Firefoxissa.
ads.ylilauta.org tullut ainakin korvaamaan fcdn.lauta.median
Title fixer skripti ei toimi enää. e: tää siis: // ==UserScript== // @name Title fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.13 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('.style-grid .thread { height: 270px !important; }') addGlobalStyle('.style-grid .message { height: 100%; overflow: hidden; pointer-events: all !important; }') addGlobalStyle('.style-grid .customTopic h3 { display: block ruby; margin: 0; overflow: hidden; text-overflow: ellipsis; }') addGlobalStyle('.style-grid .post { overflow: clip !important; }'); addGlobalStyle('.style-grid .custom-link { margin: 0 0 8px 0; }') addGlobalStyle('.style-grid .message a { color: var(--link-in-post-color); }') addGlobalStyle('.style-grid .message a:hover { color: var(--link-in-post-hover-color); }') addGlobalStyle('.style-new_replies .post.op { margin: 0; }') addGlobalStyle('.style-new_replies .customTopic h3 { overflow: hidden; text-overflow: ellipsis; margin: 0; }') addGlobalStyle('.customTopic { padding: 4px 8px; white-space: nowrap; background-color: var(--thread-title-bg-color); }') addGlobalStyle('.customTopic .icons { display: contents !important; margin-right: 8px !important; }') function titleFixer(thread) { if (thread.querySelector(".post-deleted")) { return } // Bubblegum to prevent script making titles multiple times (and failing while doing it) if(thread.classList.contains("titleted")) { return }else { thread.classList.add("titleted") } const threadDisplay = document.querySelector(".threads") const threadURL = thread.getAttribute("data-id") //change to data-url for more accuracy and less speed // Create topic string let topic = thread.querySelector("h3") let customTopic = "" if (topic) { customTopic = topic["innerHTML"] topic.outerHTML = "" } else { if (threadDisplay.classList.contains('style-grid')) { customTopic = thread.querySelector(".message")["innerHTML"] } else { customTopic = thread.querySelector(".post-message")["innerHTML"] } customTopic = customTopic.replace(/<\/?[^>]+(>|$)/g, "").substring(0, 100) } let customLink = document.createElement("a") customLink.setAttribute("href", threadURL) customLink.classList.add("custom-link"); if (threadDisplay.classList.contains('style-grid')) { // Move lock and sticky icons to topic let icons = thread.querySelector(".icons") if (icons) { customTopic = icons["outerHTML"] + customTopic icons.outerHTML = "" } // Get thread link src and get rid of original link let link = thread.getElementsByTagName("a") if (link[0]) { link[0].outerHTML = link[0].innerHTML } // Make image to link let threadImage = thread.querySelectorAll("img")[1] if (threadImage) { let postFile = thread.querySelector(".post-file") postFile.innerHTML = "" // Insert post-file div inside of newly made link postFile.parentNode.insertBefore(customLink, postFile); customLink.appendChild(postFile); let newImage = document.createElement("img") newImage.setAttribute("src", threadImage["src"]) newImage.setAttribute("srcset", threadImage["srcset"]) newImage.setAttribute("alt", "") newImage.setAttribute("loading", "lazy") postFile.append(newImage) } // Make links to be links in catalog let message = thread.querySelector(".message") const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig message.innerHTML = message.innerHTML.replace(urlRegex, "<a href='$1' target='_blank' rel='noopener ugc'>$1</a>") } thread.insertBefore(customLink.cloneNode(true), thread.firstChild); thread.firstChild.innerHTML = "<div class='customTopic'><h3>" + customTopic + "</h3></div>" } document.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }); var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { target.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }) }) }) if (document.querySelector("html").classList.contains("page-board")) { const threads = document.querySelector(".page-board .threads") observer.observe(threads, { childList: true }) }
hyvin toimii
chrome/vivaldi ja tampermonkey + ublock. Ei mitään ongelmia. Toi tampermonkey scripti poistaa sen. Ota kaikki muut filtterit pois ublockista nii häviää
kts

2 y 2 mo

Korjattu versio. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.999999999 // @run-at documen
Teitkö tämän > Poistakaa Lauta.js:n blokkaus ja käyttäkää päivitettyä Tampermonkey-skriptiä. Lisäksi muuttakaa Tampermonkeyn asetuksia näin: Dashboard -> Settings -> Config Mode: Advanced -> Inject Mode: Instant.
Joku hullumies antoi juuri Natalialle 50 päivää kultatiliä. En varmaan päivittele tuota skriptiä sinä aikana.

2 y 2 mo

Joku hullumies antoi juuri Natalialle 50 päivää kultatiliä. En varmaan päivittele tuota skriptiä sinä aikana.
Jutku vittu anto sen sulle
Remove ads with Gold »

2 y 2 mo

Jutku vittu anto sen sulle
Voi hyvin olla.
vaihtamalla chromium pohjaiseen selaimeen homma ratkeaa itsestään

2 y 2 mo

Joku hullumies antoi juuri Natalialle 50 päivää kultatiliä. En varmaan päivittele tuota skriptiä sinä aikana.
Huutista. Sopsy pisti uuden taktiikan kehiin eli lahjotaan vastustaja :D
Tiedoksi lankaa lukeville, että sopsy varjo bannnaa tähän langaan vastanneita, eli saatte punaisen istunto varoituksen jos olette käyttäjällä kirjautuneena, menkää incognito välilehdellä, ei näy mainokset, eikä ole edes mitään lisäosia asennettuna :D

2 y 2 mo

Voi hyvin olla.
Vittu nyt on kyllä kunnon korruptiot tulilla. Sulla on nyt semmonen tilanne että mafioosot tarjoaa hopeaa tai lyijyä. Jos jatkat toimintaa niin sitten se laittaa bannia varmaa. Hirvittävän jännittävä tilanne!

2 y 2 mo

vaihtamalla chromium pohjaiseen selaimeen homma ratkeaa itsestään
Suosittelen vivaldia, kinukit vetää sopsyä bataan sisäänrakennetulla adblockkerilla niin että kolisee

2 y 2 mo

Title fixer skripti ei toimi enää. e: tää siis: // ==UserScript== // @name Title fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.13 // @grant none // @author MrDarkHooD // ==/UserScript== fu
Nähtävästi tuo on yhden version jäljessä, mutta toisaalta jos oikein muistan niin näiden versioiden ainoa ero on että katalogissa on 1.14 parempilaatuiset kuvat. Ota tuosta kuitenkin koodi jota itse ajan t. tuon kirjoittaja // ==UserScript== // @name Title fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.14 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('.style-grid .thread { height: 270px !important; }') addGlobalStyle('.style-grid .message { height: 100%; overflow: hidden; pointer-events: all !important; }') addGlobalStyle('.style-grid .customTopic h3 { display: block ruby; margin: 0; overflow: hidden; text-overflow: ellipsis; }') addGlobalStyle('.style-grid .post { overflow: clip !important; }'); addGlobalStyle('.style-grid .custom-link { margin: 0 0 8px 0; }') addGlobalStyle('.style-grid .message a { color: var(--link-in-post-color); }') addGlobalStyle('.style-grid .message a:hover { color: var(--link-in-post-hover-color); }') addGlobalStyle('.style-new_replies .post.op { margin: 0; }') addGlobalStyle('.style-new_replies .customTopic h3 { overflow: hidden; text-overflow: ellipsis; margin: 0; }') addGlobalStyle('.customTopic { padding: 4px 8px; white-space: nowrap; background-color: var(--thread-title-bg-color); }') addGlobalStyle('.customTopic .icons { display: contents !important; margin-right: 8px !important; }') function titleFixer(thread) { // Bubblegum to prevent script making titles multiple times (and failing while doing it) if(thread.classList.contains("titleted")) { return }else { thread.classList.add("titleted") } const threadDisplay = document.querySelector(".threads") if (threadDisplay.classList.contains('style-grid') && thread.querySelector(".post-deleted")) { return } const threadURL = thread.getAttribute("data-id") //change to data-url for more accuracy and less speed // Create topic string let topic = thread.querySelector("h3") let customTopic = "" if (topic) { customTopic = topic["innerHTML"] topic.outerHTML = "" } else { if (threadDisplay.classList.contains('style-grid')) { customTopic = thread.querySelector(".message")["innerHTML"] } else { customTopic = thread.querySelector(".post-message")["innerHTML"] } customTopic = customTopic.replace(/<\/?[^>]+(>|$)/g, "").substring(0, 100) } let customLink = document.createElement("a") customLink.setAttribute("href", threadURL) customLink.classList.add("custom-link"); if (threadDisplay.classList.contains('style-grid')) { // Move lock and sticky icons to topic let icons = thread.querySelector(".icons") if (icons) { customTopic = icons["outerHTML"] + customTopic icons.outerHTML = "" } // Get thread link src and get rid of original link let link = thread.getElementsByTagName("a") if (link[0]) { link[0].outerHTML = link[0].innerHTML } // Make image to link let threadImage = thread.querySelectorAll("img")[1] if (threadImage) { let postFile = thread.querySelector(".post-file") postFile.innerHTML = "" // Insert post-file div inside of newly made link postFile.parentNode.insertBefore(customLink, postFile); customLink.appendChild(postFile); let newImage = document.createElement("img") newImage.setAttribute("src", threadImage["src"]) newImage.setAttribute("srcset", threadImage["srcset"]) newImage.setAttribute("alt", "") newImage.setAttribute("loading", "lazy") postFile.append(newImage) } // Make links to be links in catalog let message = thread.querySelector(".message") const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig message.innerHTML = message.innerHTML.replace(urlRegex, "<a href='$1' target='_blank' rel='noopener ugc'>$1</a>") } thread.insertBefore(customLink.cloneNode(true), thread.firstChild); thread.firstChild.innerHTML = "<div class='customTopic'><h3>" + customTopic + "</h3></div>" } document.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }); var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { target.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }) }) }) if (document.querySelector("html").classList.contains("page-board")) { const threads = document.querySelector(".page-board .threads") observer.observe(threads, { childList: true }) }

2 y 2 mo

Joku hullumies antoi juuri Natalialle 50 päivää kultatiliä. En varmaan päivittele tuota skriptiä sinä aikana.
Huutista :D

2 y 2 mo

Suosittelen vivaldia, kinukit vetää sopsyä bataan sisäänrakennetulla adblockkerilla niin että kolisee
Tää! Itelläki vivaldi käytös

2 y 2 mo

Voi hyvin olla.
Taas se jutku hajotti nää

2 y 2 mo

Nähtävästi tuo on yhden version jäljessä, mutta toisaalta jos oikein muistan niin näiden versioiden ainoa ero on että katalogissa on 1.14 parempilaatuiset kuvat. Ota tuosta kuitenkin koodi jota itse ajan t. tuon
eipä kyllä toimi, ff + tampermonkey, jostain syystä tänään lakkasi toimimasta.
Remove ads with Gold »
Onhan noita eri lautoja ollut, mutta samat ongelmat aina ilmaantuu. - Muna vai kana -ongelma, kun ihmiset eivät halua postata sivustolle, jota ei käytä melkein kukaan. - Moderointiongelmat, kun sivustostolle postataan ennen pitkää lapoa ja muuta kyttäjuttumateriaalia. - Hostausongelmat, ddos/spammi ja muu. - Rahoitusongelmat, kun useimpia mainostajia ei kiinnosta kuvalaudat ilmiselvistä syistä.

2 y 2 mo

Tää! Itelläki vivaldi käytös Taas se jutku hajotti nää
Uusi versio. Lisää uBlock Originin My Filters -listaan: ||ylilauta.org$csp=script-src https://static.ylilauta.org/ Voit kytkeä Tampermonkeyn asetuksissa Inject Mode: Default, jos olit aikaisemmin asettanut tätä varten sen Instantiksi. // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.9999999999 // @run-at document-start // @grant GM_addElement // ==/UserScript== (function() { console.log('sopsy on homo'); Object.getOwnPropertyDescriptors = new Proxy(Object.getOwnPropertyDescriptors, { apply: function (target, thisArg, args) { if (args.length === 0) { let e = Error(); e.stack = 'TypeError: Cannot convert undefined or null to object\n at Function.getOwnPropertyDescriptors (<anonymous>)\n at https://ylilauta.org/satunnainen/:9:28'; throw e; } let descriptors = target.apply(thisArg, args); if (Error().stack.indexOf('at https://ylilauta.org/') !== -1 && descriptors) { if (descriptors.error && descriptors.error.get) { delete descriptors.error.get; } else if (descriptors.createElement) { delete descriptors.createElement; } } return descriptors; } }); document.addEventListener('DOMContentLoaded', function() { Array.from(document.querySelectorAll('script')).forEach(s => { GM_addElement('script', {type: s.type, textContent: s.textContent}); }); }); document.createElement = new Proxy(document.createElement, { apply: function (target, thisArg, args) { if (Error().stack.indexOf('FrameLoader.contentLoadFailed') === -1) { return target.apply(thisArg, args); } throw 'homo'; } }); Function.prototype.toString = new Proxy(Function.prototype.toString, { apply: function (target, thisArg, args) { if (thisArg === Function.prototype.toString) { return 'function toString() { [native code] }' } if (thisArg === Object.getOwnPropertyDescriptors) { return 'function getOwnPropertyDescriptors() { [native code] }'; } if (thisArg === document.createElement) { return 'function createElement() { [native code] }'; } return target.apply(thisArg, args); } }); })();

2 y 2 mo

eipä kyllä toimi, ff + tampermonkey, jostain syystä tänään lakkasi toimimasta.
En osaa sanoa, toimii mun firefoxilla. Mulla tais olla grease monkey. Veikkaan että vika on jossain muualla.
00:10

2 y 2 mo

Uusi versio. Lisää uBlock Originin My Filters -listaan: ||ylilauta.org$csp=script-src https://static.ylilauta.org/ Voit kytkeä Tampermonkeyn asetuksissa Inject Mode: Default, jos olit aikaisemmin asettanut tät
Jos tämän scriptin ajaa niin sitten ei pysty vastaamaan eikä painamaan auki postausten vastausnappia. Mistä moinen johtuu?

2 y 2 mo

Jos tämän scriptin ajaa niin sitten ei pysty vastaamaan eikä painamaan auki postausten vastausnappia. Mistä moinen johtuu?
Koska hinttisipsi tunnistaa skriptan: selaimen konsolissa Greasemonkey intercepted alert: Protection error: It seems that your browser's native functions have been tampered. Your session is disabled for security reasons.
00:36

2 y 2 mo

Koska hinttisipsi tunnistaa skriptan: selaimen konsolissa Greasemonkey intercepted alert: Protection error: It seems that your browser's native functions have been tampered. Your session is disabled for
hintti sipsi on homo. Vittu mitä touhua. Ovatko ne lateksi muijat ottaneet lopputilit vai mistä tämmöinen innokkuus käyttäjien kiusaamiseen?

2 y 2 mo

Tässä ois tällanen vähän härskimpi, toimii vain firefoxilla. Edit: wanha, toimiva ehkä jossain alempana langassa. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at
Päivitin tän toimimaan sopsin uuden laudan lataus koodin kanssa. Hyvin virheherkkä tunkki tällä hetkellä joten tulevat muutokset varmasti rikkoo tän herkästi mutta ei oo nyt aikaa tehdä paremmin. // ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at document-start // @grant none // ==/UserScript== (function() { const unnecessaryCode = [ { code: '(this.checkTampering())', replace: '(false)'}, { code: `Object.defineProperty(this, 'ads', {value: window.ads, configurable: false, writable: false});`, replace: ''}, { code: `import FrameLoader from "./Module/FrameLoader.js";`, replace: ''}, { code: `new FrameLoader(this.toast, this.ads, this.csrfToken);`, replace: ''}, ]; document.addEventListener("beforescriptexecute", async function(e) { try { if (e.target?.src?.indexOf('Lauta.js') !== -1) { e.preventDefault(); e.stopPropagation(); } if (e.target?.innerText.indexOf('Lauta.js') !== -1) { e.preventDefault(); e.stopPropagation(); const loaderScript = e.target?.innerText; const versionNumber = loaderScript.match(/\d{1}[.]\d{1,3}/)[0]; const lautaSrcUrl = `https://static.ylilauta.org/js/${versionNumber}/Lauta.js`; const srcDirectory = lautaSrcUrl.replace('Lauta.js', ''); const lautaParams = e.target?.innerText.match(/Lauta+\([^\)]*\)(\.[^\)]*\))?/)[0].replace('Lauta(', '').replace(')', '').replaceAll(`'`, '').replace(',',';').split(';'); lautaParams[1] = JSON.parse(lautaParams[1]); console.log({ srcDirectory, versionNumber, lautaSrcUrl, lautaParams }); let lautaSrc = await (await (await fetch(lautaSrcUrl)).blob()).text(); unnecessaryCode.forEach(line => lautaSrc = lautaSrc.replace(line.code, line.replace)); // Fix imports lautaSrc = lautaSrc.replaceAll(`./Module/`, `${srcDirectory}Module/`); lautaSrc = lautaSrc.replaceAll(`./Library/`, `${srcDirectory}Library/`); lautaSrc = lautaSrc.replaceAll(`await import('./'`, `await import('${srcDirectory}'`); lautaSrc = lautaSrc.concat(`\nnew Lauta('${lautaParams[0]}', ${JSON.stringify(lautaParams[1])});`); const ads = document.querySelectorAll('.a'); ads.forEach(ad => ad.remove()); const scriptElem = document.createElement('script'); scriptElem.type = 'module'; scriptElem.innerHTML = lautaSrc; document.head.appendChild(scriptElem); } } catch (err) { console.error(err); } }); })()
Homo rikkoi taas scriptit :D

2 y 2 mo

Uusi versio. Lisää uBlock Originin My Filters -listaan: ||ylilauta.org$csp=script-src https://static.ylilauta.org/ Voit kytkeä Tampermonkeyn asetuksissa Inject Mode: Default, jos olit aikaisemmin asettanut tät
Jutikka taas vauhdis.

2 y 2 mo

Homo rikkoi taas scriptit :D

2 y 2 mo

Jutikka taas vauhdis.
Lisää uBlock Originin My Filters -listaan: ||ylilauta.org$csp=script-src https://static.ylilauta.org/ // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.9999999999 // @run-at document-start // @grant GM_addElement // ==/UserScript== (function() { console.log('sopsy on homo'); Object.getOwnPropertyDescriptors = new Proxy(Object.getOwnPropertyDescriptors, { apply: function (target, thisArg, args) { if (args.length === 0) { let e = Error(); e.stack = 'TypeError: Cannot convert undefined or null to object\n at Function.getOwnPropertyDescriptors (<anonymous>)\n at https://ylilauta.org/satunnainen/:9:28'; throw e; } let descriptors = target.apply(thisArg, args); if (Error().stack.indexOf('at https://ylilauta.org/') !== -1 && descriptors) { if (descriptors.error && descriptors.error.get) { delete descriptors.error.get; } else if (descriptors.createElement) { delete descriptors.createElement; } } return descriptors; } }); document.addEventListener('DOMContentLoaded', function() { Array.from(document.querySelectorAll('script[type="module"]')).forEach(s => { let nonce = s.textContent.match(/'[0-9a-f]{16}'/)[0]; let textContent = "let t=false; window.ads={hasAds: false, placements: , nonce: " + nonce + "}; " + s.textContent; GM_addElement('script', {type: s.type, textContent}); }); }); document.createElement = new Proxy(document.createElement, { apply: function (target, thisArg, args) { if (Error().stack.indexOf('FrameLoader.contentLoadFailed') === -1) { return target.apply(thisArg, args); } throw 'homo'; } }); Function.prototype.toString = new Proxy(Function.prototype.toString, { apply: function (target, thisArg, args) { if (thisArg === Function.prototype.toString) { return 'function toString() { [native code] }' } if (thisArg === Object.getOwnPropertyDescriptors) { return 'function getOwnPropertyDescriptors() { [native code] }'; } if (thisArg === document.createElement) { return 'function createElement() { [native code] }'; } return target.apply(thisArg, args); } }); })();
Remove ads with Gold »
00:03

2 y 2 mo

Lisää uBlock Originin My Filters -listaan: ||ylilauta.org$csp=script-src https://static.ylilauta.org/ // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vi

2 y 2 mo

2 y 2 mo

Ja taas mentiin.

2 y 2 mo

Ja taas mentiin.
||ylilauta.org$csp=script-src https://static.ylilauta.org/ // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @version 0.9999999999 // @run-at document-start // @grant GM_addElement // ==/UserScript== (function() { console.log('sopsy on homo'); Object.getOwnPropertyDescriptors = new Proxy(Object.getOwnPropertyDescriptors, { apply: function (target, thisArg, args) { if (args.length === 0) { let e = Error(); e.stack = 'TypeError: Cannot convert undefined or null to object\n at Function.getOwnPropertyDescriptors (<anonymous>)\n at https://ylilauta.org/satunnainen/:9:28'; throw e; } let descriptors = target.apply(thisArg, args); if (Error().stack.indexOf('at https://ylilauta.org/') !== -1 && descriptors) { if (descriptors.error && descriptors.error.get) { delete descriptors.error.get; } else if (descriptors.createElement) { delete descriptors.createElement; } } return descriptors; } }); let querySelectorAll = document.querySelectorAll; document.querySelectorAll = function() { return }; document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll = querySelectorAll; Array.from(document.querySelectorAll('script[type="module"]')).forEach(s => { let nonce = s.textContent.match(/'[0-9a-f]{16}'/)[0]; let textContent = "let t=false; window.ads={hasAds: false, placements: , nonce: " + nonce + "}; " + s.textContent; GM_addElement('script', {type: s.type, textContent}); }); }); document.createElement = new Proxy(document.createElement, { apply: function (target, thisArg, args) { if (Error().stack.indexOf('FrameLoader.contentLoadFailed') === -1) { return target.apply(thisArg, args); } throw 'homo'; } }); Function.prototype.toString = new Proxy(Function.prototype.toString, { apply: function (target, thisArg, args) { if (thisArg === Function.prototype.toString) { return 'function toString() { [native code] }' } if (thisArg === Object.getOwnPropertyDescriptors) { return 'function getOwnPropertyDescriptors() { [native code] }'; } if (thisArg === document.createElement) { return 'function createElement() { [native code] }'; } return target.apply(thisArg, args); } }); })();

2 y 2 mo

||ylilauta.org$csp=script-src https://static.ylilauta.org/ // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @versi
Hyvä kyllä nähdä että sillä pellellä ei ole mitään muuta tekemistä siellä toimistollaan :D
Muistaakseni lähettämällä viestin niin että konsolin kautta laitat author kenttään tekstin grill.
00:05
Huuts. Sipsi tainnut paskoa laudan toimivuutta kokonaisuudessaan, kun taistelee näitä tuulimyllyjä vastaan. Outoja bugeja pukkaa kokoajan ilman mitään blockereitakin.

2 y 2 mo

||ylilauta.org$csp=script-src https://static.ylilauta.org/ // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @versi
millä selaimella tän saa toimimaan t. firefox (napit ei toimi)
ö

2 y 2 mo

millä selaimella tän saa toimimaan t. firefox (napit ei toimi)
Chromium pohjaisilla selaimilla toimii ainoastaan.
Remove ads with Gold »

2 y 2 mo

Chromium pohjaisilla selaimilla toimii ainoastaan.
voi saakeli tätä elämää
Onko joku saanut nämä blockerit toimimaan Androidilla? Tampermonkey toimii ilmeisesti vain Firefoxin Nightlyssä, jossa taas ainakaan nämä uudet blockerit eivät toimi.
Voisi muutama valitun sanoa katselmoinnissa, jos jokainen lohko koodissa alkaisi if (!tamperDetect)
Voiko joku nyt laittaa tarkat ohjeet kuinka saan tän sivun toimimaan? Vai onko enää mahdollista saada tätä sivua silleen että: >Aloitusviestissä näkyy vastaukset >Aikaleima viesteissä hh:mm:ss >Ei mainoksia Tulisipa sota ja veisi netin vaikka isdn ajalle.

2 y 2 mo

Voiko joku nyt laittaa tarkat ohjeet kuinka saan tän sivun toimimaan? Vai onko enää mahdollista saada tätä sivua silleen että: >Aloitusviestissä näkyy vastaukset >Aikaleima viesteissä hh:mm:ss >Ei mainoksia Tulisipa sot
>"onko enää mahdollista" Ei vissiin tällä hetkellä.
Toki on mahdollista, mutta ne jotka näitä skriptejä eivät tee tätä työkseen toisin kuin sopsy vaan satunnaisesti lurkkailevana korjailee skriptejään kun sille päälle sattuu. Tää on tällaista typerää kissa hiiri leikkiä kun kaikki julkisesti jaetut ratkaisut paikataan tunneissa-päivissä ja tää tulee jatkumaan niin kauan kunnes sopsy antaa periksi.

2 y 2 mo

Toki on mahdollista, mutta ne jotka näitä skriptejä eivät tee tätä työkseen toisin kuin sopsy vaan satunnaisesti lurkkailevana korjailee skriptejään kun sille päälle sattuu. Tää on tällaista typerää kissa hiiri leikkiä k
Tietäis vaan sen todellisen syyn tämän touhun takana. Että onko rahoja käytetty silleen tymästi ja sitä turhautumista puretaan käyttäjiin. Vai ovatko lateksimuijat ottaneet lopputilin ja sen aiheuttama vitutus suunnataan käyttäjien kiusaamiseen. Vai mitä helvettiä. Koska kuten sanoit, kaikki tietävät jo nyt touhun lopputuloksen. Mistä siis syntyy sopsyn negatiivisuus joka pitää tätä kierrettä yllä?

2 y 2 mo

Tietäis vaan sen todellisen syyn tämän touhun takana. Että onko rahoja käytetty silleen tymästi ja sitä turhautumista puretaan käyttäjiin. Vai ovatko lateksimuijat ottaneet lopputilin ja sen aiheuttama vitutus su
Sopsyllä lienee jonkin sortin autismi ja ihan periaatteen vuoksi pitää runkata koodi kuntoon jos joku kehtaa yrittää kiertää tämän mainokset. Rahallisista syistä tätä ei voi perustella, koska kourallinen nyymejä kiertämässä mainoksia ei tunnu laudan tuloissa. Normomassat eivät näistä skripteistä kuitenkaan tajua niin mainoskiertäjien määrä jää lopulta tosi vähäiseksi.

2 y 2 mo

||ylilauta.org$csp=script-src https://static.ylilauta.org/ // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @versi
Vieläkö saadaan huutilainen ojennukseen?

2 y 2 mo

Päivitin tän toimimaan sopsin uuden laudan lataus koodin kanssa. Hyvin virheherkkä tunkki tällä hetkellä joten tulevat muutokset varmasti rikkoo tän herkästi mutta ei oo nyt aikaa tehdä paremmin. // ==UserScript
Paikkailin tuota taas vähäsen
Remove ads with Gold »
00:34

2 y 2 mo

Sopsyllä lienee jonkin sortin autismi ja ihan periaatteen vuoksi pitää runkata koodi kuntoon jos joku kehtaa yrittää kiertää tämän mainokset. Rahallisista syistä tätä ei voi perustella, koska kourallinen nyymejä
Vaan miksi juuri nyt? Olihan tilanne vuosikausia rauhallinen tämän osalta, nyt tämmöinen kummallinen kiukuttelu ja tietoinen haitanteko.
00:19
Maltahan on muutenkin Euroopan juutalainen. Kaikki on myynnissä, jopa kansalaisuus.

2 y 2 mo

Voiko joku nyt laittaa tarkat ohjeet kuinka saan tän sivun toimimaan? Vai onko enää mahdollista saada tätä sivua silleen että: >Aloitusviestissä näkyy vastaukset >Aikaleima viesteissä hh:mm:ss >Ei mainoksia Tulisipa sot
>Aloitusviestissä näkyy vastaukset Mitä hän tarkoitti tällä? >Aikaleima viesteissä hh:mm:ss Tässä ois CSS. /* Fix timestamps */ [data-timestamp] { font-size: 0px; cursor: text !important; user-select: auto !important; }[data-timestamp]::before { font-size: 0.8rem; content: attr(title) !important; }
Ei mitenkään. Kiittäkäämme tästä Sopsyä ja Mr. Greeniä!
Ei ois mitää akuuttii skriptii heittää?
00:01
Pienenä poikana sen huomasin..
No sitähän tässä on tehty jo monta viikkoa. Ehkä tarvitaan joku ulkopuolinen foorumi, mistä homojutku ei heti poimi uusimpia estoja. Mutta tämä on kuvalautojen todellisuus herran vuonna 2022.
Ainakaan Sipsillä ei jää aikaa paskoa lautaa paskoilla uusilla ominaisuuksilla, kun menee kaikki aika taistellessa näitä vastaan :DDD
joko natalia on kyllästynyt taisteluun sipsin homoilua vastaan?
Remove ads with Gold »

2 y 2 mo

joko natalia on kyllästynyt taisteluun sipsin homoilua vastaan?
Eipä tuossa mitään mieltä ole jos skripti toimii 2 tuntia kerrallaan kun saisi olla jo päivittämässä.
Näyttäisi toimivan. Kiitoksia. Vielä kun saisi sivuleveyden palautettua vanhaan myös Bravella, olisin tyytyväinen.

2 y 2 mo

Eipä tuossa mitään mieltä ole jos skripti toimii 2 tuntia kerrallaan kun saisi olla jo päivittämässä.
Kiertäminen on edelleen mahdollista ja koodikin on pääosin julkaistu noiden edellisten skriptiversioiden osana. Lue ja opettelee koodaamaan, tai oikeasti soveltamaan ja muokkaamaan ja rakenna oma versio. Mutta sitä ei vaan kannata julkaista tänne eikä oikeastaan jakaa muuta kuin oman rajatun kaveripiirin kesken. Koska ainoa tapa millä sopsy reagoi näihin on se että näkee koodin. Jos ei näe koodia niin ei se pysty edes tietämään että sä kierrät mainokset. Tänne postaaminen on siis se juurisyy miksi tää muutoshulabaloo on ollu päällä. Mikä Sopsylle sen helpompaa kuin muokata laudan koodia just vaan niin paljon että rikkoo edellisen kiertomenetelmän. Tänne ei siis kannata odottaa mitään sen kummempia jatkokehityksiä. Kuka nyt haluaisi pilata oman ratkaisun postaamalla sen tänne?
Nää kaikki tarkastukset tapahtuu kuitenkin selaimessa eikä sopsyn serverillä niin eikö ole mahollista tehä niin että lataisi vaikka nykyiset laudan javascriptit, poistaisi niistä kaiken ylimääräisen paskan ja sitten estäisi selainta lataamatta uusia versioita?

2 y 2 mo

Kiertäminen on edelleen mahdollista ja koodikin on pääosin julkaistu noiden edellisten skriptiversioiden osana. Lue ja opettelee koodaamaan, tai oikeasti soveltamaan ja muokkaamaan ja rakenna oma versio. Mutta
täähän se kyllä ois. sinänsä tästä mainosrumbasta on ollut hyötyäkin, olen nimittäin ruvennut opettelemaan koodausta ja innostunut aiheesta :D
Sopsi taas hiessä koodannut laudan latauslogiikan uusiksi, varmaan joku kolmas kerta parin viikon sisään 😂👌
Ei sinänsä mutta mulla ainakin tuntuu lauta jumittelevan välillä. Voi olla että sopsylla on lipsahtanu tuotantoon koodia jota ei ole ehditty testata tarpeeksi. Kai sillä oikeus on siihen mutta jotenkin tulee tunne että ehkä jotkut muutokset tossa pääsiäisen koodausrumbassa on saattanu olla vähän hätiköityjä. Ehkä koodia nyt sitten korjaillaan pitkin kevättä. Kuka tietää.
Ja sieltähän se homoilu taas alkoi
Menee tosiaan jo niin pitkälle että ilman mitää adblockia ja silti ei toimi :D
Noniin. Sopsy onnistui rikkomaan kaikki laudan napit mobiililla. Ei siis mitään mainostenestoa edes käytössä tai skriptejä. Hyvin siellä maltalla osataan.
Remove ads with Gold »
Huutista, nyt taas toimii sitten myös adblock päällä. Vittu sopsy koitahan nyt
noniin meikäläisellä ei toimi enää normi selaimella mikään. Pitää hakee eriselain ja tulla kirjottaa vain tähän että hyvää koodia siellä. katsellaan josko lauta toimis kuukauden päästä
voiko tän homoilun estää jotenkin? window.alert = function(){} ei ainakaan toimi eikä tossa ole edes sitä vaihtoehtoa estää aina enkä löydä mistään firefoxin asetuksista asetusta estää nämä homoneekerin paskaikkunat
Toisia lautoja on vaikka ja kuinka monia
ei kellään ois koodinpätkää uBlockkiin millä sais tän sivuston normaalin leveyden tietokoneelle?

2 y 2 mo

ei kellään ois koodinpätkää uBlockkiin millä sais tän sivuston normaalin leveyden tietokoneelle?
ylilauta.org##body:style(max-width: 100% !important;) ylilauta.org###navbar:style(max-width: 100% !important;)

2 y 2 mo

ylilauta.org##body:style(max-width: 100% !important;) ylilauta.org###navbar:style(max-width: 100% !important;)
Miks teet tuon noin pitkästi vaikka rootissa olis valmis asetus tuohon? ylilauta.org##:root:style(--body-max-width: 100%;)
Ainaki normi CSS toimii, en käytä ublock niin en tiedä sen syntakseja.
voisiko toastille laittaa display:none tjsp ublockillla toimiiko se

2 y 2 mo

voisiko toastille laittaa display:none tjsp ublockillla toimiiko se
Ei.
Remove ads with Gold »

2 y 2 mo

Ei.
opacity: 0?

2 y 2 mo

opacity: 0?
Siellä on täm tämmöinen tarkastusfunktio huolehtimaan, että sekä toast-root että itse toastit näkyvät oikein ja halutulla tavalla: _checkVisibility(toast) { const rect = toast.elm.getBoundingClientRect(); const computedStyle = getComputedStyle(toast.elm); const rootComputedStyle = getComputedStyle(toast.root); if ( toast.root.scrollHeight > toast.root.clientHeight || toast.root.scrollWidth > toast.root.clientWidth || toast.root.offsetWidth < 200 || toast.root.offsetHeight < 30 || toast.elm.scrollHeight > toast.elm.clientHeight || toast.elm.scrollWidth > toast.elm.clientWidth || toast.elm.offsetWidth < 200 || toast.elm.offsetHeight < 30 || rect.top < 0 || rect.top > window.innerHeight - 30 || rect.right > window.innerWidth || rect.left < 0 || (rootComputedStyle.zIndex === 'auto' ? 0 : rootComputedStyle.zIndex) < 2 || computedStyle.visibility !== 'visible' || rootComputedStyle.transform !== 'none' || computedStyle.transform !== 'none' || rootComputedStyle.opacity < 0.8 || computedStyle.opacity < 0.8 || rootComputedStyle.pointerEvents !== 'auto' || computedStyle.clipPath !== 'none' || computedStyle.pointerEvents !== 'auto' || computedStyle.color !== 'rgb(0, 0, 0)' || !([ 'rgba(83, 238, 112, 0.8)', 'rgba(240, 92, 94, 0.8)', 'rgba(122, 197, 230, 0.8)', 'rgba(255, 167, 26, 0.8)', ].includes(computedStyle.backgroundColor)) || parseFloat(computedStyle.fontSize) < 10 ) { this._displayFallback(toast); console.error('Toast could not be displayed properly for some reason, it probably does not fit in the viewport. ' + 'Falling back to alert(), browsers should know how to display it properly.'); } } Tässä tarkistuksessa katsotaan, että sekä rootin että toastin itsensä opacity on vähintään 0.8.

2 y 2 mo

opacity: 0?
Et ole vissiin seurannut lankaa tässä viime aikoina. Sopsyn koodi tarkistaa kaikki attribuutit jotka liittyy noiden näkymiseen ja paskoo heti jos edes epäilee ettei ne ikkunat näy.

2 y 2 mo

opacity: 0?
Ei.
Sopsi taitaa luulla voittaneensa tuon beforescriptexecute ratkaisun mutta taitaa olla jutkumieheltä jotain mennyt ohi 🤡

2 y 2 mo

Sopsi taitaa luulla voittaneensa tuon beforescriptexecute ratkaisun mutta taitaa olla jutkumieheltä jotain mennyt ohi 🤡
Ei nyt heitetä lisää bensaa liekkeihin. Skriptien kiertäminen on ihan OK niin kauan kun se tapahtuu edes välttävästi pinnan alla. Ongelma syntyy sitten kun kiertomenetelmät julkaistaan avoimesti ja niistä tulee mainstream. Anna siis asian mieluummin olla. Jatkuva muutosrumba on vain haitaksi niille joilla on omat toimivat skriptit.
00:20
Hyvin toimii 👍
Mulla on 5 rivin userscripti joka estää mainokset ja jolla sivu toimii :D Jätkät ajattelee liian monimutkaisesti :D

2 y 2 mo

||ylilauta.org$csp=script-src https://static.ylilauta.org/ // ==UserScript== // @name Sopsyn homoilublokkeri // @description Sopsy voi haistaa pitkän vitun // @match https://ylilauta.org/* // @versi
||ylilauta.org$csp=script-src https://static.ylilauta.org/ Ei toimi napit jos on tää päällä. Kokeilin chromella ja firefoxilla molemmilla

2 y 2 mo

Mulla on 5 rivin userscripti joka estää mainokset ja jolla sivu toimii :D Jätkät ajattelee liian monimutkaisesti :D
Itselläni on käytössä muutama uBlockin filtteri, joilla Sopsyn homoilut blokkaantuvat kokonaan ja sivu toimii silti oikein hyvin. Sen kyllä tiedän, että jos filtterini jaan, Sopsy kiertää ne välittömästi.
Remove ads with Gold »

2 y 2 mo

Itselläni on käytössä muutama uBlockin filtteri, joilla Sopsyn homoilut blokkaantuvat kokonaan ja sivu toimii silti oikein hyvin. Sen kyllä tiedän, että jos filtterini jaan, Sopsy kiertää ne välittömästi.
Ikävä kyllä tää oman ratkaisun kanssa myös :D

2 y 2 mo

Itselläni on käytössä muutama uBlockin filtteri, joilla Sopsyn homoilut blokkaantuvat kokonaan ja sivu toimii silti oikein hyvin. Sen kyllä tiedän, että jos filtterini jaan, Sopsy kiertää ne välittömästi.
Älä jaa. Juutalainen on hävinnyt pelin
Mikä on siis viimeisin toimiva ratkaisu?
Harmi kun en osaa
täällä pitää alkaa jakaan jotain vinkkejä miten kiertää jutkuilut, mitkä ei todellisuudessa pidä paikkaansa. Sit kun sypsi kiertää ne niin koko lauta hetken aikaa taas paskana :D

2 y 2 mo

täällä pitää alkaa jakaan jotain vinkkejä miten kiertää jutkuilut, mitkä ei todellisuudessa pidä paikkaansa. Sit kun sypsi kiertää ne niin koko lauta hetken aikaa taas paskana :D
Ihanku se ei testais niitä eka.
Luuletko ettei sitä Sipsiltä löydy, kun katsoo mimmoisia viritelmiä laudan koodiin on tehnyt, ja minkälaisten bugien vuoksi onkaan sen takia paininut käyttäjien kanssa? Motivaattorina toimii Mr. Greenin mainostulovirta.
Juu, nopeampaa vain koodata näkemättä tulosta :D
Object.defineProperty(window, 'innerHeight', {writable: true, configurable: true, value: 99999}); ja sitten root-toast topilla vittuun

2 y 2 mo

Object.defineProperty(window, 'innerHeight', {writable: true, configurable: true, value: 99999}); ja sitten root-toast topilla vittuun
Jaha, huomenna onkin taas uudet koodit sipsillä käytössä.
Remove ads with Gold »

2 y 2 mo

Jaha, huomenna onkin taas uudet koodit sipsillä käytössä.
Saa nähä miten meinaa korjata window.innerheightit

2 y 2 mo

Saa nähä miten meinaa korjata window.innerheightit
Jos minä keksin sen niin keksii myös sipsi.
oisko toimvaa ratkaisua firefoxiin? tää

2 y 2 mo

Päivitin tän toimimaan sopsin uuden laudan lataus koodin kanssa. Hyvin virheherkkä tunkki tällä hetkellä joten tulevat muutokset varmasti rikkoo tän herkästi mutta ei oo nyt aikaa tehdä paremmin. // ==UserScript
ei näytä toimivan enää en ymmärrä miksi sopsy vaivautuu kiusaamaan näin ei ne mainokset näy kuitenkaan, vaikka onkin jotain iframe-kikkailuja ja ties mitä näkyy vaan valkoset laatikot mainosten tilalla
tää/epätäät piiloon pilaamasta lautailukokemusta, hirveetä paskakoodia mutta toimii kertokaa joku miten toi setTimeout tehdään async/awaitilla, koitin mutta en saanu toimimaan ja vituttaa kun koodissa on taikanumero // ==UserScript== // @name up/downtää-hider // @match *://ylilauta.org/* // @icon https://www.google.com/s2/favicons?sz=64&domain=ylilauta.org // ==/UserScript== function getBtn() { let btn = document.getElementsByClassName('wide-elm')[0]; btn.addEventListener("click", removeVB); }; function removeVB() { setTimeout(function(){ document.querySelectorAll('.vote-buttons').forEach(item => { item.remove(); }); btn = getBtn(); }, 120); }; const callback = function(mutationsList, observer) { for (let mutation of mutationsList) { if (mutation.type === 'childList') { removeVB(); } } }; new MutationObserver(callback).observe(document.getElementsByClassName('thread-replies')[0], {childList: true}); removeVB(); var btn = getBtn();

2 y 2 mo

tää/epätäät piiloon pilaamasta lautailukokemusta, hirveetä paskakoodia mutta toimii kertokaa joku miten toi setTimeout tehdään async/awaitilla, koitin mutta en saanu toimimaan ja vituttaa kun koodissa on taikanumero // =
En jaksanu testata mutta tässä ois CSS versio jossa ei tarvi pyöritellä kokoaika jotain muuttamassa asioita. // ==UserScript== // @name Up/downvote hider - ylilauta.org // @match *://ylilauta.org/* // @version 1.0 // @grant none // @author MrDarkHooD // ==/UserScript== const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = '[data-action="Post.upvote"], [data-action="Post.downvote"] { display: none; }'; head.appendChild(style);
Sipsin uusimmat muutokset hajottivat toimintonappien korjaajan, tässä olisi taas toimiva versio. // ==UserScript== // @name Action button mover - ylilauta.org // @description Moves action buttons to original place without hamburger menu. Also adds reverse imagesearch button. // @match *://ylilauta.org/* // @version 1.9 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('.style-new_replies .thread-meta .functions { display: none !important; }') addGlobalStyle('.icon-bookmark2.active { color: var(--body-bg) !important; }') addGlobalStyle('.threads.style-grid .thread .thread-buttons { position: unset; display: block; }') addGlobalStyle('.threads.style-grid .thread .thread-buttons button { float: right; }') //This is cross coding because "Title fixer" makes default stuff not compative with this code addGlobalStyle('.style-grid .custom-link { margin: 0 0 0 0 !important; }') function fixButtons(post) { if (post.getElementsByClassName("post-deleted")[0]) { return } let postId = post.getAttribute('data-id') let threadId = post.parentNode.getAttribute('data-id') let buttonList = let buttonDiv if (document.querySelector(".threads").classList.contains('style-new_replies')) { buttonDiv = post.querySelector(".post-meta .right") if (buttonDiv.querySelector(".icon-menu") === null) { return } let voteButtons = buttonDiv.querySelector(".vote-buttons") buttonList.push(["Post.reply", "icon-reply", postId]) buttonList.push(voteButtons) if (post.classList.contains('op-post')) { buttonList.push(["Thread.follow", "icon-bookmark2", threadId]) } //reverse imagesearch if (post.querySelector(".post-file")) { const imgUrl = post.querySelector('.post-file').querySelector('a').href buttonList.push(["Post.reverseImagesearch", "icon-magnifier", imgUrl]) } if (post.classList.contains('own')) { buttonList.push(["Post.edit", "icon-pencil-line", postId]) if(post.classList.contains('op-post')) { buttonList.push(["Thread.delete", "icon-trash2", threadId]) }else { buttonList.push(["Post.delete", "icon-trash2", postId]) } }else { buttonList.push(["Post.donateGold", "icon-medal-empty", postId]) if(post.classList.contains('op-post')) { buttonList.push(["Thread.hide", "icon-minus", threadId]) }else { buttonList.push(["Thread.hideUser", "icon-minus", postId]) } buttonList.push(["Post.report", "icon-flag2", postId]) } buttonList.forEach((element) => { let newButton if (Array.isArray(element)) { newButton = document.createElement("button") newButton.classList.add("post-button"); newButton.setAttribute("data-action", element[0]) newButton.setAttribute("data-id", element[2]) newButton.classList.add(element[1]); }else { newButton = element } buttonDiv.append(newButton) }) console.log(threadId) }else { //Catalog buttonDiv = post.parentNode.querySelector(".thread-buttons") if (buttonDiv.querySelector(".icon-menu") === null) { return } if (post.parentNode.classList.contains('own')) { buttonList.push(["Thread.delete", "icon-trash2", threadId]) }else { buttonList.push(["Post.report", "icon-flag2", postId]) buttonList.push(["Thread.hide", "icon-minus", threadId]) } } buttonDiv.innerHTML = "" buttonList.forEach((element) => { let newButton if (Array.isArray(element)) { newButton = document.createElement("button") newButton.classList.add("post-button"); newButton.setAttribute("data-action", element[0]) newButton.setAttribute("data-id", element[2]) newButton.classList.add(element[1]); }else { newButton = element } buttonDiv.append(newButton) }) } /* Create logic for reverse image search */ function clickHandler(e) { console.log(e.target.dataset.action) if (e.target.dataset.action !== 'Post.reverseImagesearch') { return //Let everything else work normally } e.stopPropagation(); //Prevent event to start original handler e.preventDefault(); const url = "https://www.google.com/searchbyimage?&image_url=" + e.target.dataset.id window.open(url, '_blank').focus(); } var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { const postList = Array.from(target.querySelectorAll(".post")) postList.forEach((post) => { fixButtons(post) }) }) }) document.querySelectorAll(".post").forEach((post) => { fixButtons(post) }) let threads = "" if (document.querySelector("html").classList.contains("page-thread")) { threads = document.querySelector(".page-thread .thread-replies") }else { threads = document.querySelector(".page-board .threads") } observer.observe(threads, { childList: true }) document.querySelector('.threads').addEventListener('click', clickHandler);
Tietääkö joku miten saa tehtyä itse ilmoitukset- ja seuratut langat napit jotka toimii? Ohessa sivupalkin poistaja joka kloonaa nuo napit mutta niiden klikkaaminen ei tee mitään. // ==UserScript== // @name Remove sidebar - ylilauta.org // @match *://ylilauta.org/* // @version 1.3 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('body { padding-top: 5px !important; padding-bottom: 5px !important; }') addGlobalStyle('#sidebar, #navbar { display: none; }') addGlobalStyle('#content, html:not(.no-sidebar) #content { margin: 0 5px }') // Add your own, or rather report missing names to author const shortNames = shortNames["anime"] = "a" shortNames["satunnainen"] = "b" shortNames["palaute"] = "meta" shortNames["pub"] = "rr" shortNames["matkailu"] = "coco" shortNames["huumeet"] = "h" shortNames["ohjelmointi"] = "o" shortNames["masiinat"] = "m" shortNames["musiikki"] = "mu" shortNames["talous"] = "biz" shortNames["pelit"] = "g" shortNames["muoti"] = "fa" shortNames["ihmissuhteet"] = "soc" shortNames["deitti"] = "d" const contentDiv = document.querySelector('#content'); const sideBar = document.getElementById("sidebar") const notificationsButton = document.querySelector("[data-notifications-fn]") const followedThreadsButton = document.querySelector("[data-thread-follow-box-fn]") const tabs = ["[data-tab-id='profile']", "#nav-threads", "#nav-boards"] let topBar = document.createElement('div'); topBar.setAttribute("id", "topBar"); contentDiv.prepend(topBar); tabs.forEach((i, idx, tab) => { const currentTab = sideBar.querySelector(tab[idx]) currentTab.querySelectorAll("nav a").forEach((link) => { // Make board names shorter if(currentTab.getAttribute("id") == "nav-boards") { let boardUrlName = link.getAttribute("href").replace(/\//g, "") if(shortNames[boardUrlName]) { link.innerHTML = shortNames[boardUrlName] }else { link.innerHTML = boardUrlName } } topBar.append(link, " / ") }); if(idx === 0) { topBar.append(notificationsButton) topBar.append(" ") topBar.append(followedThreadsButton) } topBar.innerHTML += "<br>" }); //contentDiv.append(topBar.cloneNode(true));
Milloinkahan Google tai joku isompi taho pistää stopin tälle Sopsyn mainospakotuspelleilylle? Sivusto on kirjaimellisesti haittaohjelma tässä kohtaa.
Onko viestien ja lankojen poiston estoon olemassa uutta scriptiä? Mulla on tämä vanha v3 versio jota on hieman muokattu. Se estää vielä langan poistumisen mutta ei yksittäisten viestien poistoa.
Mulla on ollut käytössä joskus tänne postattu userscripti, joka estää smooth-scrollin ja lisää ankkurin urliin että saa siirryttyä back-napilla takasin sinne missä oli ennen kuin klikkasi lainauslinkkiä, mutta lakkasi yhtäkkiä toimimasta, jaksaisko joku korjata? Edit: Korjasinkin ite, oli vaan data-id vaihtunut -> data-post-id. Alla oleva koodi toimii nyt, jos joku muu tarvitsee. Edit2: Hajosi taas tuossa joku aika sitten, koodi korjattu taas purkkavirityksellä. Click listeneri ei enää toimi, joten vaihdoin mouseupiksi. // ==UserScript== // @name Ylilauta vanha ankkurointi // @description Palauttaa Ylilaudan vanhan vastauksen klikkaamisen ankkuroinnin ja suoraan vastaukseen siirtymisen. // @version 0.2 // @match https://ylilauta.org/*/* // @run-at document-end // @grant none // ==/UserScript== document.addEventListener("mouseup", function(e) { if (e.target && e.target.classList.contains("ref") && e.button == 0) { const id = e.target.getAttribute("data-post-id"); if (document.getElementById(id)) { window.location.href = "#" + id; } } });
Remove ads with Gold »
Title fixer ei ole toiminut muutamaan päivään, otsikkopalkkia klikatessa vie aina osoitteeseen "https://ylilauta.org/*alalauta*/null". Saisko joku korjattua, tossa nykyinen skripti: // ==UserScript== // @name Title fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.14 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('.style-grid .thread { height: 270px !important; }') addGlobalStyle('.style-grid .message { height: 100%; overflow: hidden; pointer-events: all !important; }') addGlobalStyle('.style-grid .customTopic h3 { display: block ruby; margin: 0; overflow: hidden; text-overflow: ellipsis; }') addGlobalStyle('.style-grid .post { overflow: clip !important; }'); addGlobalStyle('.style-grid .custom-link { margin: 0 0 8px 0; }') addGlobalStyle('.style-grid .message a { color: var(--link-in-post-color); }') addGlobalStyle('.style-grid .message a:hover { color: var(--link-in-post-hover-color); }') addGlobalStyle('.style-new_replies .post.op { margin: 0; }') addGlobalStyle('.style-new_replies .customTopic h3 { overflow: hidden; text-overflow: ellipsis; margin: 0; }') addGlobalStyle('.customTopic { padding: 4px 8px; white-space: nowrap; background-color: var(--thread-title-bg-color); }') addGlobalStyle('.customTopic .icons { display: contents !important; margin-right: 8px !important; }') function titleFixer(thread) { // Bubblegum to prevent script making titles multiple times (and failing while doing it) if(thread.classList.contains("titleted")) { return }else { thread.classList.add("titleted") } const threadDisplay = document.querySelector(".threads") if (threadDisplay.classList.contains('style-grid') && thread.querySelector(".post-deleted")) { return } const threadURL = thread.getAttribute("data-id") //change to data-url for more accuracy and less speed // Create topic string let topic = thread.querySelector("h3") let customTopic = "" if (topic) { customTopic = topic["innerHTML"] topic.outerHTML = "" } else { if (threadDisplay.classList.contains('style-grid')) { customTopic = thread.querySelector(".message")["innerHTML"] } else { customTopic = thread.querySelector(".post-message")["innerHTML"] } customTopic = customTopic.replace(/<\/?[^>]+(>|$)/g, "").substring(0, 100) } let customLink = document.createElement("a") customLink.setAttribute("href", threadURL) customLink.classList.add("custom-link"); if (threadDisplay.classList.contains('style-grid')) { // Move lock and sticky icons to topic let icons = thread.querySelector(".icons") if (icons) { customTopic = icons["outerHTML"] + customTopic icons.outerHTML = "" } // Get thread link src and get rid of original link let link = thread.getElementsByTagName("a") if (link[0]) { link[0].outerHTML = link[0].innerHTML } // Make image to link let threadImage = thread.querySelectorAll("img")[1] if (threadImage) { let postFile = thread.querySelector(".post-file") postFile.innerHTML = "" // Insert post-file div inside of newly made link postFile.parentNode.insertBefore(customLink, postFile); customLink.appendChild(postFile); let newImage = document.createElement("img") newImage.setAttribute("src", threadImage["src"]) newImage.setAttribute("srcset", threadImage["srcset"]) newImage.setAttribute("alt", "") newImage.setAttribute("loading", "lazy") postFile.append(newImage) } // Make links to be links in catalog let message = thread.querySelector(".message") const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig message.innerHTML = message.innerHTML.replace(urlRegex, "<a href='$1' target='_blank' rel='noopener ugc'>$1</a>") } thread.insertBefore(customLink.cloneNode(true), thread.firstChild); thread.firstChild.innerHTML = "<div class='customTopic'><h3>" + customTopic + "</h3></div>" } document.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }); var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { target.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }) }) }) if (document.querySelector("html").classList.contains("page-board")) { const threads = document.querySelector(".page-board .threads") observer.observe(threads, { childList: true }) }

2 y 2 mo

Title fixer ei ole toiminut muutamaan päivään, otsikkopalkkia klikatessa vie aina osoitteeseen "https://ylilauta.org/*alalauta*/null". Saisko joku korjattua, tossa nykyinen skripti: // ==UserScript== // @name Title f
Uus versio tulee viikonlopun aikana, ehkä jo kohta. Ootappa ku tiedustelen emännältä aikatauluja ja vedän housut jalkaan.

2 y 2 mo

Title fixer ei ole toiminut muutamaan päivään, otsikkopalkkia klikatessa vie aina osoitteeseen "https://ylilauta.org/*alalauta*/null". Saisko joku korjattua, tossa nykyinen skripti: // ==UserScript== // @name Title f
Tarvi lisätä 7 merkkiä. // ==UserScript== // @name Title fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.15 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('.style-grid .thread { height: 270px !important; }') addGlobalStyle('.style-grid .message { height: 100%; overflow: hidden; pointer-events: all !important; }') addGlobalStyle('.style-grid .customTopic h3 { display: block ruby; margin: 0; overflow: hidden; text-overflow: ellipsis; }') addGlobalStyle('.style-grid .post { overflow: clip !important; }'); addGlobalStyle('.style-grid .custom-link { margin: 0 0 8px 0; }') addGlobalStyle('.style-grid .message a { color: var(--link-in-post-color); }') addGlobalStyle('.style-grid .message a:hover { color: var(--link-in-post-hover-color); }') addGlobalStyle('.style-new_replies .post.op { margin: 0; }') addGlobalStyle('.style-new_replies .customTopic h3 { overflow: hidden; text-overflow: ellipsis; margin: 0; }') addGlobalStyle('.customTopic { padding: 4px 8px; white-space: nowrap; background-color: var(--thread-title-bg-color); }') addGlobalStyle('.customTopic .icons { display: contents !important; margin-right: 8px !important; }') function titleFixer(thread) { // Bubblegum to prevent script making titles multiple times (and failing while doing it) if(thread.classList.contains("titleted")) { return }else { thread.classList.add("titleted") } const threadDisplay = document.querySelector(".threads") if (threadDisplay.classList.contains('style-grid') && thread.querySelector(".post-deleted")) { return } const threadURL = thread.getAttribute("data-thread-id") // commend outdated //change to data-url for more accuracy and less speed // Create topic string let topic = thread.querySelector("h3") let customTopic = "" if (topic) { customTopic = topic["innerHTML"] topic.outerHTML = "" } else { if (threadDisplay.classList.contains('style-grid')) { customTopic = thread.querySelector(".message")["innerHTML"] } else { customTopic = thread.querySelector(".post-message")["innerHTML"] } customTopic = customTopic.replace(/<\/?[^>]+(>|$)/g, "").substring(0, 100) } let customLink = document.createElement("a") customLink.setAttribute("href", threadURL) customLink.classList.add("custom-link"); if (threadDisplay.classList.contains('style-grid')) { // Move lock and sticky icons to topic let icons = thread.querySelector(".icons") if (icons) { customTopic = icons["outerHTML"] + customTopic icons.outerHTML = "" } // Get thread link src and get rid of original link let link = thread.getElementsByTagName("a") if (link[0]) { link[0].outerHTML = link[0].innerHTML } // Make image to link let threadImage = thread.querySelectorAll("img")[1] if (threadImage) { let postFile = thread.querySelector(".post-file") postFile.innerHTML = "" // Insert post-file div inside of newly made link postFile.parentNode.insertBefore(customLink, postFile); customLink.appendChild(postFile); let newImage = document.createElement("img") newImage.setAttribute("src", threadImage["src"]) newImage.setAttribute("srcset", threadImage["srcset"]) newImage.setAttribute("alt", "") newImage.setAttribute("loading", "lazy") postFile.append(newImage) } // Make links to be links in catalog let message = thread.querySelector(".message") const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig message.innerHTML = message.innerHTML.replace(urlRegex, "<a href='$1' target='_blank' rel='noopener ugc'>$1</a>") } thread.insertBefore(customLink.cloneNode(true), thread.firstChild); thread.firstChild.innerHTML = "<div class='customTopic'><h3>" + customTopic + "</h3></div>" } document.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }); var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { target.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }) }) }) if (document.querySelector("html").classList.contains("page-board")) { const threads = document.querySelector(".page-board .threads") observer.observe(threads, { childList: true }) }
Samalla päivitystä reference fixeriin, sama juttu hajotti tän. Vaati 4 lisämerkkiä ja yhden merkin muutoksen. // ==UserScript== // @name Message reference fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.7 // @grant none // @author MrDarkHooD // ==/UserScript== function refLinkFixer(ref) { ref.innerHTML = ref.innerHTML.replace(/≫/g, ">>") if (!/\d+/.test(ref.innerHTML)) { ref.innerHTML = ">>" + ref.getAttribute("data-post-id") + " (OP)" } } document.querySelectorAll(".ref").forEach(ref => { refLinkFixer(ref) }); var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { target.querySelectorAll(".ref").forEach((ref) => { refLinkFixer(ref) }) }) }) /* Fix reference insertion in message textarea */ function clickHandler(e) { if (e.target.dataset.action !== 'Post.reply' && e.target.className !== 'ref') { return //Let everything else work normally } e.stopPropagation(); //Prevent event to start original handler /* Jumping */ if(e.target.className === "ref") { const selectedId = e.target.dataset.postId selectedMessage = document.getElementById(selectedId) if(selectedMessage[0]) { e.preventDefault(); //Prevent reference links to work as normal links } window.location.href = "#" + selectedId return } e.preventDefault(); //Prevent reference links to work as normal links /* Post form */ console.log(e.target.dataset) let postForm = document.getElementsByClassName("post-form")[0] let postField = postForm.getElementsByTagName("textarea")[0] let referenceNumber = e.target.dataset.postId let startPos = postField.selectionStart let endPos = postField.selectionEnd let referenceToInsert = "" if (postField.value == "" || postField.value[postField.selectionStart-1] == "\n") { //cursor is in beginning of line referenceToInsert = ">>" + referenceNumber + "\n" } else if (startPos != postField.value.length && postField.value[postField.selectionStart-1] != "\n") { //cursor is not in beginning or end of line referenceToInsert = ">>" + referenceNumber } else { //cursor is in end of line referenceToInsert = "\n>>" + referenceNumber + "\n" } postField.value = postField.value.substring(0, startPos) + referenceToInsert + postField.value.substring(endPos, postField.value.length) //Focus cursor after inserted refrence postField.focus() postField.selectionEnd = startPos + referenceToInsert.length //Move post form under refrenced message } if(document.querySelector(".threads").classList.contains('style-new_replies')) { const threads = document.querySelector(".page-thread .thread-replies") observer.observe(threads, { childList: true }) document.querySelector('.threads').addEventListener('click', clickHandler); }
Action button mover oli nähtävästi myös hajonnut. // ==UserScript== // @name Action button mover - ylilauta.org // @description Moves action buttons to original place without hamburger menu. Also adds reverse imagesearch button. // @match *://ylilauta.org/* // @version 1.10 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('.style-new_replies .thread-meta .functions { display: none !important; }') addGlobalStyle('.icon-bookmark2.active { color: var(--body-bg) !important; }') addGlobalStyle('.threads.style-grid .thread .thread-buttons { position: unset; display: block; }') addGlobalStyle('.threads.style-grid .thread .thread-buttons button { float: right; }') //This is cross coding because "Title fixer" makes default stuff not compative with this code addGlobalStyle('.style-grid .custom-link { margin: 0 0 0 0 !important; }') function fixButtons(post) { if (post.getElementsByClassName("post-deleted")[0]) { return } let postId = post.getAttribute('data-post-id') let threadId = post.parentNode.getAttribute('data-thread-id') let buttonList = let buttonDiv if (document.querySelector(".threads").classList.contains('style-new_replies')) { buttonDiv = post.querySelector(".post-meta .right") if (buttonDiv.querySelector(".icon-menu") === null) { return } let voteButtons = buttonDiv.querySelector(".vote-buttons") buttonList.push(["Post.reply", "icon-reply", postId]) buttonList.push(voteButtons) if (post.classList.contains('op-post')) { buttonList.push(["Thread.follow", "icon-bookmark2", threadId]) } //reverse imagesearch if (post.querySelector(".post-file")) { const imgUrl = post.querySelector('.post-file').querySelector('a').href buttonList.push(["Post.reverseImagesearch", "icon-magnifier", imgUrl]) } if (post.classList.contains('own')) { buttonList.push(["Post.edit", "icon-pencil-line", postId]) if(post.classList.contains('op-post')) { buttonList.push(["Thread.delete", "icon-trash2", threadId]) }else { buttonList.push(["Post.delete", "icon-trash2", postId]) } }else { buttonList.push(["Post.donateGold", "icon-medal-empty", postId]) if(post.classList.contains('op-post')) { buttonList.push(["Thread.hide", "icon-minus", threadId]) }else { buttonList.push(["Thread.hideUser", "icon-minus", postId]) } buttonList.push(["Post.report", "icon-flag2", postId]) } buttonList.forEach((element) => { let newButton if (Array.isArray(element)) { newButton = document.createElement("button") newButton.classList.add("post-button"); newButton.setAttribute("data-action", element[0]) newButton.setAttribute("data-post-id", element[2]) newButton.classList.add(element[1]); }else { newButton = element } buttonDiv.append(newButton) }) console.log(threadId) }else { //Catalog buttonDiv = post.parentNode.querySelector(".thread-buttons") if (buttonDiv.querySelector(".icon-menu") === null) { return } if (post.parentNode.classList.contains('own')) { buttonList.push(["Thread.delete", "icon-trash2", threadId]) }else { buttonList.push(["Post.report", "icon-flag2", postId]) buttonList.push(["Thread.hide", "icon-minus", threadId]) } } buttonDiv.innerHTML = "" buttonList.forEach((element) => { let newButton if (Array.isArray(element)) { newButton = document.createElement("button") newButton.classList.add("post-button"); newButton.setAttribute("data-action", element[0]) newButton.setAttribute("data-post-id", element[2]) newButton.classList.add(element[1]); }else { newButton = element } buttonDiv.append(newButton) }) } /* Create logic for reverse image search */ function clickHandler(e) { console.log(e.target.dataset.action) if (e.target.dataset.action !== 'Post.reverseImagesearch') { return //Let everything else work normally } e.stopPropagation(); //Prevent event to start original handler e.preventDefault(); const url = "https://www.google.com/searchbyimage?&image_url=" + e.target.dataset.id window.open(url, '_blank').focus(); } var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { const postList = Array.from(target.querySelectorAll(".post")) postList.forEach((post) => { fixButtons(post) }) }) }) document.querySelectorAll(".post").forEach((post) => { fixButtons(post) }) let threads = "" if (document.querySelector("html").classList.contains("page-thread")) { threads = document.querySelector(".page-thread .thread-replies") }else { threads = document.querySelector(".page-board .threads") } observer.observe(threads, { childList: true }) document.querySelector('.threads').addEventListener('click', clickHandler);

2 y 2 mo

Tarvi lisätä 7 merkkiä. // ==UserScript== // @name Title fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.15 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobal
nise!

2 y 2 mo

Tarvi lisätä 7 merkkiä. // ==UserScript== // @name Title fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.15 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobal
Voi hemmetti olipas helppo fiksi, yritin itekki korjata vaan puusilmä kun olen niin empä huomannu tota.

2 y 2 mo

Voi hemmetti olipas helppo fiksi, yritin itekki korjata vaan puusilmä kun olen niin empä huomannu tota.
En mäkään, joku metassa oli huomannut :D en oo ollu omalla käyttiksellä pariin päivään niin en edes huomannut ennenkuin joku valitti.
Onks tää se kiinalaisten Chrome (Opera)?
Ähh, katon yöllä.
Remove ads with Gold »
Oho, onpa nätti katalogi.
Eli OG Operan tekijöiden uus
Onko sellaista skriptiä olemassa joka napin painalluksella piilottaisi kaikkien lankaan postanneiden kaikki viestit? Haluaisin piilottaa kaikki animelangat pysyvästi.

2 y 1 mo

Onko sellaista skriptiä olemassa joka napin painalluksella piilottaisi kaikkien lankaan postanneiden kaikki viestit? Haluaisin piilottaa kaikki animelangat pysyvästi.
Se käyttäjän piilottaminen on lankakohtainen muutenkin, ei piilota käyttäjän kaikkia viestejä, ainoastaan sen langan viestit

2 y 1 mo

Se käyttäjän piilottaminen on lankakohtainen muutenkin, ei piilota käyttäjän kaikkia viestejä, ainoastaan sen langan viestit
No vittu.

2 y 1 mo

Onko sellaista skriptiä olemassa joka napin painalluksella piilottaisi kaikkien lankaan postanneiden kaikki viestit? Haluaisin piilottaa kaikki animelangat pysyvästi.
tirsk

2 y 1 mo

Onko sellaista skriptiä olemassa joka napin painalluksella piilottaisi kaikkien lankaan postanneiden kaikki viestit? Haluaisin piilottaa kaikki animelangat pysyvästi.
Tuo onnistuu näppäinkomennolla ctrl+w.
Sulla kävi sitten tuuri, nimittäin korjasin nuo napit katalogista mutta ne hajosivat langan sisältä osittain. Viestien editointi ja poisto ei onnistu jos lanka auki. Tulee myöhemmin parempi korjaus. // ==UserScript== // @name Action button mover - ylilauta.org // @description Moves action buttons to original place without hamburger menu. Also adds reverse imagesearch button. // @match *://ylilauta.org/* // @version 1.11 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('.style-new_replies .thread-meta .functions { display: none !important; }') addGlobalStyle('.icon-bookmark2.active { color: var(--body-bg) !important; }') addGlobalStyle('.threads.style-grid .thread .thread-buttons { position: unset; display: block; }') addGlobalStyle('.threads.style-grid .thread .thread-buttons button { float: right; }') //This is cross coding because "Title fixer" makes default stuff not compative with this code addGlobalStyle('.style-grid .custom-link { margin: 0 0 0 0 !important; }') function fixButtons(post) { if (post.getElementsByClassName("post-deleted")[0]) { return } let postId = post.getAttribute('data-post-id') let threadId = post.getAttribute('data-thread-id') let buttonList = let buttonDiv if (document.querySelector(".threads").classList.contains('style-new_replies')) { buttonDiv = post.querySelector(".post-meta .right") if (buttonDiv.querySelector(".icon-menu") === null) { return } let voteButtons = buttonDiv.querySelector(".vote-buttons") buttonList.push(["Post.reply", "icon-reply", postId]) buttonList.push(voteButtons) if (post.classList.contains('op-post')) { buttonList.push(["Thread.follow", "icon-bookmark2", threadId]) } //reverse imagesearch if (post.querySelector(".post-file")) { const imgUrl = post.querySelector('.post-file').querySelector('a').href buttonList.push(["Post.reverseImagesearch", "icon-magnifier", imgUrl]) } if (post.classList.contains('own')) { buttonList.push(["Post.edit", "icon-pencil-line", postId]) if(post.classList.contains('op-post')) { buttonList.push(["Thread.delete", "icon-trash2", threadId]) }else { buttonList.push(["Post.delete", "icon-trash2", postId]) } }else { buttonList.push(["Post.donateGold", "icon-medal-empty", postId]) if(post.classList.contains('op-post')) { buttonList.push(["Thread.hide", "icon-minus", threadId]) }else { buttonList.push(["Thread.hideUser", "icon-minus", postId]) } buttonList.push(["Post.report", "icon-flag2", postId]) } buttonList.forEach((element) => { let newButton if (Array.isArray(element)) { newButton = document.createElement("button") newButton.classList.add("post-button"); newButton.setAttribute("data-action", element[0]) newButton.setAttribute("data-post-id", element[2]) newButton.classList.add(element[1]); }else { newButton = element } buttonDiv.append(newButton) }) console.log(threadId) }else { //Catalog buttonDiv = post.parentNode.querySelector(".thread-buttons") if (buttonDiv.querySelector(".icon-menu") === null) { return } if (post.classList.contains('own')) { buttonList.push(["Thread.delete", "icon-trash2", threadId]) }else { buttonList.push(["Post.report", "icon-flag2", postId]) buttonList.push(["Thread.hide", "icon-minus", threadId]) } } buttonDiv.innerHTML = "" buttonList.forEach((element) => { let newButton if (Array.isArray(element)) { newButton = document.createElement("button") newButton.classList.add("post-button"); newButton.setAttribute("data-action", element[0]) newButton.setAttribute("data-thread-id", element[2]) newButton.classList.add(element[1]); }else { newButton = element } buttonDiv.append(newButton) }) } /* Create logic for reverse image search */ function clickHandler(e) { console.log(e.target.dataset.action) if (e.target.dataset.action !== 'Post.reverseImagesearch') { return //Let everything else work normally } e.stopPropagation(); //Prevent event to start original handler e.preventDefault(); const url = "https://www.google.com/searchbyimage?&image_url=" + e.target.dataset.id window.open(url, '_blank').focus(); } var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { const postList = Array.from(target.querySelectorAll(".post")) postList.forEach((post) => { fixButtons(post) }) }) }) if (document.querySelector(".threads").classList.contains('style-new_replies')) { document.querySelectorAll(".post").forEach((post) => { fixButtons(post) }) }else { document.querySelectorAll(".thread").forEach((post) => { fixButtons(post) }) } let threads = "" if (document.querySelector("html").classList.contains("page-thread")) { threads = document.querySelector(".page-thread .thread-replies") }else { threads = document.querySelector(".page-board .threads") } observer.observe(threads, { childList: true }) document.querySelector('.threads').addEventListener('click', clickHandler);
Voi neekerin vittu sekin on hajonnut :DDDD
Joo mun piti säätää läppäriä mutta kai mä sit käyn polttaan savut ja alan korjaamaan tuota.
Remove ads with Gold »
Ei tästä nyt tuu mitään. Saispa palkkaa tästä paskasta.
Joo huomenna vois keskittyä enemmän.
Mikä on autosage?
Tuo on yhden rivin koodi. Googlaa "select dom element is" ja "Set select box true js".

2 y 1 mo

Tuo on yhden rivin koodi. Googlaa "select dom element is" ja "Set select box true js".
No tässäpä tuo yksi rivi, taivutettuna userscriptin muotoon. // ==UserScript== // @name Ylilauta AutoSage // @version 0.1 // @description Automatically mark posts to sage thread // @match https://ylilauta.org/* // @grant none // ==/UserScript== document.querySelector('#post-form input[name="sage"]').checked = true;

2 y 1 mo

No tässäpä tuo yksi rivi, taivutettuna userscriptin muotoon. // ==UserScript== // @name Ylilauta AutoSage // @version 0.1 // @description Automatically mark posts to sage thread // @match
Nice, joku teki sen ennenku ehdin koneelle :D

2 y 2 mo

Päivitin tän toimimaan sopsin uuden laudan lataus koodin kanssa. Hyvin virheherkkä tunkki tällä hetkellä joten tulevat muutokset varmasti rikkoo tän herkästi mutta ei oo nyt aikaa tehdä paremmin. // ==UserScript
Tänään lakkasi tämä toimimasta Firefoxissa, nappulat rikki ja kuvat aukeavat uuteen välilehteen. Kauan se kestikin.
Vammaisen viestikentän korjaavaa scriptiä odotellessa..
joku yksittäinen total convert skripti ois kova tälle paskalaudalle

2 y 1 mo

Vammaisen viestikentän korjaavaa scriptiä odotellessa..
Tää, vittu mitä vammaista paskaa taas. Entisenlaiseksi jos saisi.
Remove ads with Gold »
Ja saisko joku tämän tekstinmuokkausnapit -skriptin toimimaan uudessa langan luonti ikkunassa? // ==UserScript== // @name Tekstinmuokkausnapit // @namespace Violentmonkey Scripts // @match https://ylilauta.org/* // @grant none // @version 1.0 // ==/UserScript== const options = ['b', 'em', 'u', 's', 'spoiler', 'code', 'quote', 'big', 'small']; const form = document.getElementById("post-form"); const t = document.getElementsByName("message")[0]; const buttons = document.createElement("div"); buttons.className = "buttons"; t.parentElement.before(buttons); for (const option of options) { const b = document.createElement("button"); b.innerText = option; b.type = "button" b.className = "button"; buttons.appendChild(b); b.addEventListener('click', () => { t.value = t.value.slice(0,t.selectionStart) + '[' + option + ']' + t.value.slice(t.selectionStart,t.selectionEnd) + '[/' + option + ']' + t.value.slice(t.selectionEnd,t.value.length);}); }

2 y 1 mo

Ja saisko joku tämän tekstinmuokkausnapit -skriptin toimimaan uudessa langan luonti ikkunassa? // ==UserScript== // @name Tekstinmuokkausnapit // @namespace Violentmonkey Scripts // @match https://ylilauta
Oota huomiseen, en pääse nyt koneelle.
Mobiililla taas nappulat paskana (Xiaomi 11 lite). Kiva homma..
Oisko kellään toimivaa lankojen hidetysskriptiä? Edellinen hajos kun hidenappi meni valikon alle.

2 y 1 mo

Ja saisko joku tämän tekstinmuokkausnapit -skriptin toimimaan uudessa langan luonti ikkunassa? // ==UserScript== // @name Tekstinmuokkausnapit // @namespace Violentmonkey Scripts // @match https://ylilauta
Korvaa tämä const form = document.getElementById("post-form"); Tällä const form = document.getElementById("reply-form");
Nää sipsin ominaisuudet paskoo laudan sellaiseen kuntoon että jengi postaa tänne kuin tämä olisi Facebook, viestit yhden rivin mittaisia jos sellaiselle on tää-äänen jälkeen tarvetta. Lopetan itse tämän paskan tekohengittämisen, en jaksa.

2 y 1 mo

Korvaa tämä const form = document.getElementById("post-form"); Tällä const form = document.getElementById("reply-form");
ei toimi e: kai tuohonkin joku observer tms pitää olla kun langan teko ikkuna avautuu napista sivulatauksen jälkeen.
Muuten hyvä mutta käytän Safaria

2 y 1 mo

Muuten hyvä mutta käytän Safaria
Ostat js injektorin siihen ja ajat sorsasta.

2 y 1 mo

Ostat js injektorin siihen ja ajat sorsasta.
Alan kallistua tähän

2 y 1 mo

Nää sipsin ominaisuudet paskoo laudan sellaiseen kuntoon että jengi postaa tänne kuin tämä olisi Facebook, viestit yhden rivin mittaisia jos sellaiselle on tää-äänen jälkeen tarvetta. Lopetan itse tämän paskan tekohengit
Eiköhän tää oo nyt nähty
Remove ads with Gold »
Mikä pointti edes koittaa manipuloida että porukka kirjoittaa lyhyempiä viestejä? Säästyy joku tila vai kasvattaa postausmäärää or wat?

2 y

Mikä pointti edes koittaa manipuloida että porukka kirjoittaa lyhyempiä viestejä? Säästyy joku tila vai kasvattaa postausmäärää or wat?
Sopsy aina perustelee kaikenlaisia muutoksia sillä että säästyy tilaa, mutta nyt sitten kasvatti rivivälejä?? :D

2 y

Sopsy aina perustelee kaikenlaisia muutoksia sillä että säästyy tilaa, mutta nyt sitten kasvatti rivivälejä?? :D
Tää on joku psykologinen koe varmaan menossa tai sopsy purkaa jotain patoutumia lautaan.

2 y 1 mo

Tänään lakkasi tämä toimimasta Firefoxissa, nappulat rikki ja kuvat aukeavat uuteen välilehteen. Kauan se kestikin.
// ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at document-start // @grant none // ==/UserScript== (function() { const unnecessaryCode = [ { code: '(this.checkTampering())', replace: '(false)'}, { code: `Object.defineProperty(this, 'ads', {value: window.ads, configurable: false, writable: false});`, replace: ''}, { code: `import FrameLoader from "./Module/FrameLoader.js";`, replace: ''}, { code: `new FrameLoader(this.#toast, window.ads, csrfToken);`, replace: ''}, ]; document.addEventListener("beforescriptexecute", async function(e) { try { if (e.target?.src?.indexOf('Lauta.js') !== -1) { e.preventDefault(); e.stopPropagation(); } if (e.target?.innerText.indexOf('Lauta.js') !== -1) { e.preventDefault(); e.stopPropagation(); const loaderScript = e.target?.innerText; const versionNumber = loaderScript.match(/\d{1}[.]\d{1,3}/)[0]; const lautaSrcUrl = `https://static.ylilauta.org/js/${versionNumber}/Lauta.js`; const srcDirectory = lautaSrcUrl.replace('Lauta.js', ''); const lautaParams = e.target?.innerText.match(/Lauta+\([^\)]*\)(\.[^\)]*\))?/)[0].replace('Lauta(', '').replace(')', '').replaceAll(`'`, '').replace(',',';').split(';'); lautaParams[1] = JSON.parse(lautaParams[1]); console.log({ srcDirectory, versionNumber, lautaSrcUrl, lautaParams }); let lautaSrc = await (await (await fetch(lautaSrcUrl)).blob()).text(); unnecessaryCode.forEach(line => lautaSrc = lautaSrc.replace(line.code, line.replace)); // Fix imports lautaSrc = lautaSrc.replaceAll(`./Module/`, `${srcDirectory}Module/`); lautaSrc = lautaSrc.replaceAll(`./Library/`, `${srcDirectory}Library/`); lautaSrc = lautaSrc.replaceAll(`await import('./'`, `await import('${srcDirectory}'`); lautaSrc = lautaSrc.concat(`\nnew Lauta('${lautaParams[0]}', ${JSON.stringify(lautaParams[1])});`); const ads = document.querySelectorAll('.a'); ads.forEach(ad => ad.remove()); const scriptElem = document.createElement('script'); scriptElem.type = 'module'; scriptElem.innerHTML = lautaSrc; document.head.appendChild(scriptElem); } } catch (err) { console.error(err); } }); })()

2 y

// ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at document-start // @grant none // ==/UserScript== (function() { const unnecessaryCode = [
hajooko muilla ilmoitukset tän kanssa?

2 y

hajooko muilla ilmoitukset tän kanssa?
Katso että ei ole js tiedostojen cachetusta mitenkään disabloitu. Kun scripti lataa Lauta.js:n pitää sen tulla selaimen cachesta.

2 y

Katso että ei ole js tiedostojen cachetusta mitenkään disabloitu. Kun scripti lataa Lauta.js:n pitää sen tulla selaimen cachesta.
en tietääkseni oo tehnyt mitään tuollaista, enkä löytänyt mitään tuohon viittaavaa asetusta mikä vaikuttaisi?
Title fixeriin päivitystä. Kun disabloin kaikki muut scriptit (koska ne ei enää toimi) niin tässä tuli esille katalogissa ärsyttävä visuaalinen vittuilu. Tässä on ongelmana että jos missään kohtaa lankaa on otsikko (esimerkiksi kysely jossain) niin se katsotaan langan otsikoksi mikäli sellaista ei oikeasti ole. En ole varma oliko tätä ongelmaa ennen uusimpia muutoksia, huomasin sen ainakin vasta jälkeenpäin. // ==UserScript== // @name Title fixer - ylilauta.org // @match *://ylilauta.org/* // @version 1.15 // @grant none // @author MrDarkHooD // ==/UserScript== function addGlobalStyle(css) { const nonce = document.getElementsByTagName("script")[0].nonce; const head = document.getElementsByTagName('head')[0]; const style = document.createElement('style'); style.type = 'text/css'; style.nonce = nonce; style.innerHTML = css; head.appendChild(style); } addGlobalStyle('.style-grid .thread { height: 270px !important; }') addGlobalStyle('.style-grid .message { height: 100%; overflow: hidden; pointer-events: all !important; }') addGlobalStyle('.style-grid .customTopic h3 { display: block ruby; margin: 0; overflow: hidden; text-overflow: ellipsis; }') addGlobalStyle('.style-grid .post { overflow: clip !important; }'); addGlobalStyle('.style-grid .custom-link { margin: 0 0 8px 0; }') addGlobalStyle('.style-grid .message a { color: var(--link-in-post-color); }') addGlobalStyle('.style-grid .message a:hover { color: var(--link-in-post-hover-color); }') addGlobalStyle('.style-new_replies .post.op { margin: 0; }') addGlobalStyle('.style-new_replies .customTopic h3 { overflow: hidden; text-overflow: ellipsis; margin: 0; }') addGlobalStyle('.customTopic { padding: 4px 8px; white-space: nowrap; background-color: var(--thread-title-bg-color); }') addGlobalStyle('.customTopic .icons { display: contents !important; margin-right: 8px !important; }') addGlobalStyle('.style-grid .custom-link { margin: 0 0 0 0 !important; }') function titleFixer(thread) { // Bubblegum to prevent script making titles multiple times (and failing while doing it) if(thread.classList.contains("titleted")) { return }else { thread.classList.add("titleted") } const threadDisplay = document.querySelector(".threads") if (threadDisplay.classList.contains('style-grid') && thread.querySelector(".post-deleted")) { return } const threadURL = thread.getAttribute("data-thread-id") // commend outdated //change to data-url for more accuracy and less speed // Create topic string let topic = thread.querySelector("h3") let customTopic = "" if (topic) { customTopic = topic["innerHTML"] topic.outerHTML = "" } else { if (threadDisplay.classList.contains('style-grid')) { customTopic = thread.querySelector(".message")["innerHTML"] } else { customTopic = thread.querySelector(".post-message")["innerHTML"] } customTopic = customTopic.replace(/<\/?[^>]+(>|$)/g, "").substring(0, 100) } let customLink = document.createElement("a") customLink.setAttribute("href", threadURL) customLink.classList.add("custom-link"); if (threadDisplay.classList.contains('style-grid')) { // Move lock and sticky icons to topic let icons = thread.querySelector(".icons") if (icons) { customTopic = icons["outerHTML"] + customTopic icons.outerHTML = "" } // Get thread link src and get rid of original link let link = thread.getElementsByTagName("a") if (link[0]) { link[0].outerHTML = link[0].innerHTML } // Make image to link let threadImage = thread.querySelectorAll("img")[1] if (threadImage) { let postFile = thread.querySelector(".post-file") postFile.innerHTML = "" // Insert post-file div inside of newly made link postFile.parentNode.insertBefore(customLink, postFile); customLink.appendChild(postFile); let newImage = document.createElement("img") newImage.setAttribute("src", threadImage["src"]) newImage.setAttribute("srcset", threadImage["srcset"]) newImage.setAttribute("alt", "") newImage.setAttribute("loading", "lazy") postFile.append(newImage) } // Make links to be links in catalog let message = thread.querySelector(".message") const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig message.innerHTML = message.innerHTML.replace(urlRegex, "<a href='$1' target='_blank' rel='noopener ugc'>$1</a>") } thread.insertBefore(customLink.cloneNode(true), thread.firstChild); thread.firstChild.innerHTML = "<div class='customTopic'><h3>" + customTopic + "</h3></div>" } document.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }); var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { target.querySelectorAll(".thread").forEach((thread) => { titleFixer(thread) }) }) }) if (document.querySelector("html").classList.contains("page-board")) { const threads = document.querySelector(".page-board .threads") observer.observe(threads, { childList: true }) }
On, mutta sitä ei voi postata tänne laajempaan käyttöön koska muuten Sopsy heti muuttaa sivustoa niin että skripti ei toimi. Jos siis et osaa itse niin kannattaa tiedustella kaveripiirin kautta mutta täältä sitä ei voi kysyä.
Oisko kellää poistaa akuuttii tää sortterii
Remove ads with Gold »

1 y 10 mo

Oisko kellää poistaa akuuttii tää sortterii
tää edit. olikin tuossa

2 y

Title fixeriin päivitystä. Kun disabloin kaikki muut scriptit (koska ne ei enää toimi) niin tässä tuli esille katalogissa ärsyttävä visuaalinen vittuilu. Tässä on ongelmana että jos missään kohtaa lankaa on otsikko (esim
Ideaa miten saisin mutationobserver-setit koskemaan kaikkia (avoinna olevan) langan postauksia kun uusia postauksia tulee, eli ei vain sitä uutta. Tarkoitus on siirtää .post-replies ylös 4chan-tyyliin. function replyFixer(post) { for (const postreplies of post.querySelectorAll('.post-replies')) { let parent = postreplies.parentElement; let pPost = parent.querySelector('.post-meta .right'); pPost.append(postreplies); } } document.querySelectorAll(".post").forEach((post) => { replyFixer(post) }); var observer = new MutationObserver(function(mutations) => { ********mitä helvettiä tähän hä*********** }) const replies = document.querySelector(".thread-replies") observer.observe(replies, { childList: true })
Laittakaas se scripti jolla saa tän paskasivun levitettyä koko näytölle

1 y 10 mo

Laittakaas se scripti jolla saa tän paskasivun levitettyä koko näytölle
CSS langassa on ohje mutta tässä. :root { --body-max-width: 100%; }
Ai helvetti toi on paljon nätimpi kuin omani, en edes tiennyt tuollaisesta :D
Tämä oli sekalaisessa, poistetun viestin ja langan katoamisen esto -skripti. Toimii itsellä lankojen kohdalla mutta ei yksittäisten viestien kohdalla? // ==UserScript== // @name Yksittaisen viestin poiston esto ja poistetun langan katoamisen esto v5 // @namespace Greasemonkey Scripts // @match *://ylilauta.org/*/* // @grant none // ==/UserScript== function scriptWrapper () { (function(open) { XMLHttpRequest.prototype.open = function() { this.addEventListener("readystatechange", function() { if (this.status === 410) { document.getElementsByClassName("thread")[0].style['background-color'] = '#e6194b'; this.abort(); } var poistetut_vastaukset = this.getResponseHeader("x-deleted-replies"); poistetut_vastaukset.split(",").forEach(function(e) { let t = document.getElementById(e); if (null !== t) { t.id = "r" + t.id; let p = document.getElementById("r" + e); p.classList.remove("post"); p.style['background-color'] = '#f032e6'; p.style['border-bottom-color'] = '#f032e6'; p.getElementsByClassName("postinfo")[0].style['background-color'] = '#e6194b'; p.getElementsByClassName("postinfo")[0].style['border-bottom-color'] = '#e6194b'; } }); }, false); open.apply(this, arguments); }; })(XMLHttpRequest.prototype.open); } function addJS_Node(funcToRun) { const D = document; const source = '(' + funcToRun.toString() + ')()'; const blobi = new Blob([ source ]); const url = URL.createObjectURL(blobi); const scriptNode = D.createElement('script'); scriptNode.setAttribute('src', url); const target = D.getElementsByTagName('head')[0] || D.body || D.documentElement; target.appendChild(scriptNode); } addJS_Node(scriptWrapper);
Miten voi olla että kun poistin noista filttereistä "timestamp fixin" ja päivitin ylilaudan, niin tää paskasivu muuttui tämmöseks rumaksi keskitetyksi? Laitoin sen takaisin ja päivitin taas niin ei auttanut mitään, lauta ei palautunut koko ruudun levyiseksi kuin se oli. Tää on ihan hirvee, apuja kaivattaisiin kiitos.

1 y 10 mo

Miten voi olla että kun poistin noista filttereistä "timestamp fixin" ja päivitin ylilaudan, niin tää paskasivu muuttui tämmöseks rumaksi keskitetyksi? Laitoin sen takaisin ja päivitin taas niin ei auttanut mitään, lauta
CSS langassa tais olla ublock filtteri tolle. En jaksa puhelimella kaivaa.
Hmm todella kummallista. Korjasin ne puolipisteet sulkujen sisälle, ja nyt alkoi pelittää. En vaan ymmärrä että miten ja miksi ne oli mennyt rikki, sillä nämä oli toiminut mulla monta kuukautta. Enkä mielestäni tänään koskenut niihin enempää, kuin poistin yhden filtterin ja laitoin sitten takaisin. Mut iso kiitos tästä nyt lauta näyttää taas normaalilta! On nää mystisiä juttuja joskus..!

1 y 10 mo

Hmm todella kummallista. Korjasin ne puolipisteet sulkujen sisälle, ja nyt alkoi pelittää. En vaan ymmärrä että miten ja miksi ne oli mennyt rikki, sillä nämä oli toiminut mulla monta kuukautta. Enkä mielestäni
Ei ole kerta eikä kaksi kun olen monta tuntia yrittänyt etsiä koodista virhettä ja lopulta kaikki korjaantuu yksinkertaisesti tallentamalla uusiksi. Varmaan jotain välimuistipaskaa.
Remove ads with Gold »
Hyvin mahdollista, kaikki ovat idiootteja ja kaikki on perseestä kun puhutaan koodaamisesta, ja siis ihan epäironisesti.
>mutta ei tässä tapauksessa Hmm... miksi? Toki kun määritteitä listailee niin ne pitäis päättää puolipisteeseen mutta eikö sulku pitäisi automaattisesti lopettaa sen kuitenkin. Ja ei kai se nyt haittais vaikka puolipiste olisi myös ulkopuolella?
Tampermonkeyssä pitää olla Inject mode: Instant
:root { --body-max-width: 100%; } Jos ei oo kultaista niin asenna stylus.

1 y 9 mo

:root { --body-max-width: 100%; } Jos ei oo kultaista niin asenna stylus.
siis laitoin tonne uBlock Originin My Filtersiin ylilauta.org##:root:style(--body-max-width: 100%;) muttei toimi? mitä teen väärin?

1 y 9 mo

siis laitoin tonne uBlock Originin My Filtersiin ylilauta.org##:root:style(--body-max-width: 100%;) muttei toimi? mitä teen väärin?
ylilauta.org##body:style(max-width: 100% !important;)

1 y 9 mo

ylilauta.org##body:style(max-width: 100% !important;)
Kiitos, tämä toimi!

1 y 9 mo

siis laitoin tonne uBlock Originin My Filtersiin ylilauta.org##:root:style(--body-max-width: 100%;) muttei toimi? mitä teen väärin?
Tos pitäis kai olla kaks kaksoispistettä ennen roottia.
Onko sellaista scriptiä millä pystyy selaamaan langan videoita ja kuvia diaesityksenä?
Laitetaas jakoon :) // ==UserScript== // @name Ylis sortterit // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://ylilauta.org/*/* // @icon https://www.google.com/s2/favicons?sz=64&domain=ylilauta.org // @grant none // @run-at document-start // ==/UserScript== (() => { const $$ = (s, o = document)=> Array.from(o.querySelectorAll(s)); const $ = (s, o = document)=> o.querySelector(s); let menu = null; const moveElement = (el, dest) => { // Declare a fragment: var fragment = document.createDocumentFragment(); // Append desired element to the fragment: fragment.appendChild(el); // Append fragment to desired element: dest.appendChild(fragment); } const getNumFromElement = (selector, target = document) => { return Number($(selector, target)?.textContent) || 0; } const sortByTää = (aPost, bPost) => { const a = getNumFromElement('.post-upvotes', aPost); const b = getNumFromElement('.post-upvotes', bPost); return b - a; } const sortByEiTää = (aPost, bPost) => { const a = getNumFromElement('.post-downvotes', aPost); const b = getNumFromElement('.post-downvotes', bPost); return b - a; } const sortByReplies = (aPost, bPost) => { const a = getNumFromElement('.post-replies', aPost); const b = getNumFromElement('.post-replies', bPost); return b - a; } const sort = (fn) => { const thread = document.querySelector(".thread-replies"); const posts = $$(".post:not(.op-post)"); let sorted = posts.sort(fn); sorted.forEach(e => thread.appendChild(e)); } const addButton = (text, onClick) => { const button = document.createElement('button'); button.textContent = text; button.addEventListener('click', onClick); menu.prepend(button); } const injectUI = () => { // Create menu container const nav = $('.navigation'); menu = document.createElement('div'); menu.style.cssText = ` display: flex; gap: 8px; `; nav.appendChild(menu); // Move reply button inside menu const replyButton = $('[data-action="Thread.reply"]'); moveElement(replyButton, menu); // Add buttons addButton('Järjestä: 👎', () => sort(sortByEiTää)); addButton('Järjestä: 👍', () => sort(sortByTää)); addButton('Järjestä: Vastaukset', () => sort(sortByReplies)); } const observer = new MutationObserver(() => { const header = $('.navigation'); if (header) { observer.disconnect(); injectUI(); } }); const config = { childList: true }; // Start the observer observer.observe($('body'), config); })();
Remove ads with Gold »

2 y

// ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at document-start // @grant none // ==/UserScript== (function() { const unnecessaryCode = [
Sopsy taas paskonu lisää lautaa ja rikko samalla tän

1 y 9 mo

Sopsy taas paskonu lisää lautaa ja rikko samalla tän

2 y

// ==UserScript== // @name Sopsy bypass // @match https://ylilauta.org/* // @run-at document-start // @grant none // ==/UserScript== (function() { const unnecessaryCode = [
Olin postaamassa samaa mutta huomasin että se johtui tällä kertaa Tampermonkeyn päivityksestä, aikaisemmassa versiossa 4.17 skripti toimii edelleen https://addons.mozilla.org/en-US/firefox/addon/tampermonkey/versions/ Mikähän tässä 4.18 versiossa sen rikkoo

1 y 9 mo

Olin postaamassa samaa mutta huomasin että se johtui tällä kertaa Tampermonkeyn päivityksestä, aikaisemmassa versiossa 4.17 skripti toimii edelleen https://addons.mozilla.org/en-US/firefox/addon/tampermon
Kysykää jos joku tahtoo ton koko paskan piiloon koodit on valmiina.

1 y 9 mo

Sopsy taas paskonu lisää lautaa ja rikko samalla tän

1 y 9 mo

Fiksaus löytyi, syy on tuossa userScript APIssa. Vaihtaa Tampermonkeyn Security-asetuksista Content Script APIn Contect Scriptiksi ja painaa alempaa savea niin toimii taas.
Mikäs on tilanne, saako noita toasteja sun muita paskoja piiloon? Toast-elementin piilottaminen css:llä ainakin ublockin filtterin kautta iskee nuo alert-dialogit, ja alert- ja confirm-natiivifunktioiden poistaminen tampereen apinalla taas ainakin Chromessa rikkoo kaikki jäsällä toteutetut toiminnot yliksen käyttöliittymässä.
Miten tampermonkey on malwarea?
Jahas, lauta taas lukukelvoton ja työstresit painaa niin ettei kyllä jaksa selvittää mitä se jutku tällä kertaa.
Kummallista ku tässähän jos koittaa kiertää toastia niin pamahtaa alert ikkunaa sitten? :D Ja tuo koodi toimi monta monta kuukautta ja nyt vasta korjasi. Varmasti ollut tietoinen asiasta aikapäiviä sitten, ei vaan ollut kykyä korjata kun vasta nyt :D
Vielä toimii estojen kierrot mitkä tuli kodasteltua kesälomalla. Ei näy toastit eikä mainokset
Remove ads with Gold »

1 y 8 mo

Vielä toimii estojen kierrot mitkä tuli kodasteltua kesälomalla. Ei näy toastit eikä mainokset
Hyshys ei niistä saa puhua, muuten sopsy löytää ne :D
>Violentmonkey ainoa luotettava FireMonkey on kans luotettava, mutta silläkään ei muistaakseni toimi tuo beforescriptexecute valitettavasti
Tiedoksi kaikille, jotka eivät halua käyttää ylimääräisiä selainlisäosia: uBlock Originilla voi myös injektoida javascriptia sivuille. Niiden lista sisäänrakennetuista scriptleteista löytyy reposta https://github.com/gorhill/uBlock/wiki/Resources-Library Omia skriptejä varten pitää laittaa advanced asetuksista userResourcesLocation kohtaan jäsätiedoston linkki. Funktioita kutsutaan filtterilistan asetuksilla, esim. ylilauta.org##+js(alert-buster.js) Valitettavasti tämä ei toimi Firefoxilla, lisätiedot voit hakea repon issueista. Ungoogled Chromiumilla testattu ja toimii hyvin, eli luultavasti menee kaikilla Blink-selaimilla. PS. Sopsy syö kakkaa
Mitä sun konsoli sanoo? Itellä nää ja ei huolen häivääkään ylimääräisestä paskasta. ylilauta.org##.toast-root ylilauta.org##iframe.a ylilauta.org##+js(alert-buster.js)
Mikä siinä on että kun luen lautaa täältä mökiltä hitaalla yhteydellä niin toi helvetin oranssi laatikko tulee koko ajan vaikka vaihdan selaimenkin sellaiseen missä ei ole mitään mainoksen- tai muuta estoa edes asennettu? Onko laudassa joku helkkarin hardkoodattu timeout missä ajassa mainosten pitää latautua vai mikä saatana tätä vaivaa??? Voiko asialle tehdä jotain?

1 y 8 mo

Mikä siinä on että kun luen lautaa täältä mökiltä hitaalla yhteydellä niin toi helvetin oranssi laatikko tulee koko ajan vaikka vaihdan selaimenkin sellaiseen missä ei ole mitään mainoksen- tai muuta estoa edes asennettu
Juu.

1 y 8 mo

Juu.
Mistä helvetistä Sopsy sen tietää että nopeako yhteys mulla on. Eihän tommosta nyt voi käyttää ohjelmointiperusteena. Voiko sitä muuttaa jotenkin helposti?

1 y 8 mo

Mistä helvetistä Sopsy sen tietää että nopeako yhteys mulla on. Eihän tommosta nyt voi käyttää ohjelmointiperusteena. Voiko sitä muuttaa jotenkin helposti?
Helposti, se vain katsoo kauan menee ladata tiedosto.

1 y 8 mo

Helposti, se vain katsoo kauan menee ladata tiedosto.
No miksei se sitten tomi? Miks mulle tulee oranssi ruutu?

1 y 8 mo

No miksei se sitten tomi? Miks mulle tulee oranssi ruutu?
Koska lataa liian hitaasti.
Remove ads with Gold »
00:25
Tein lankojen nostajaskriptin eräälle nyymille, mutta pistän sen nyt tännekin jos joku tarvitsee. Upotteessa esitelty miten toimii, eli aluksi vaan lataa fronttiin paljon lankoja esim. shift klikkaamalla, ja sitten tuon avulla voi nostaa haluamat langat ylös. Toimii sekä napista että enterillä. // ==UserScript== // @name Ylilauta: Lankojen nostaja // @namespace Violentmonkey Scripts // @match *://ylilauta.org/* // @grant none // @version 0.1 // @description Nostaa halutut langat ylös. // ==/UserScript== (function() { 'use strict'; function luoSyoteElementit() { const langat = document.querySelectorAll('.thread'); const isanta = document.querySelector('.threads'); const syotesailo = document.createElement('div'); syotesailo.style.gridColumn = '1/-1'; syotesailo.style.width = '100%'; syotesailo.style.margin = '20px 0'; syotesailo.style.textAlign = 'center'; const nostosyotekentta = document.createElement('input'); nostosyotekentta.id = 'nostosyotekentta'; nostosyotekentta.style.width = '70%'; nostosyotekentta.type = 'text'; nostosyotekentta.placeholder = 'Nostotermi (esim. niilo22)'; const nostonappula = document.createElement('button'); nostonappula.id = 'nostonappula'; nostonappula.style.marginLeft = '10px'; nostonappula.textContent = 'Nosta langat'; syotesailo.appendChild(nostosyotekentta); syotesailo.appendChild(nostonappula); isanta.insertBefore(syotesailo, langat[0]); } function nostaLangat(syote) { if(syote.length === 0) { return; } const langat = document.querySelectorAll('.thread'); const isanta = document.querySelector('.threads'); let kohde = null; const loydetytKortit = ; for(let elementti of langat) { const sisainenHTML = elementti.textContent.toLowerCase(); if(sisainenHTML.includes(syote.toLowerCase())) { loydetytKortit.push(elementti); } else { if(!kohde) { kohde = elementti; } } } if(!kohde) { return; } for(let kortti of loydetytKortit) { isanta.insertBefore(kortti, kohde); } } function lisaaTapahtumakuuntelijat() { const nostosyotekentta = document.querySelector('#nostosyotekentta'); const nostonappula = document.querySelector('#nostonappula'); nostosyotekentta.addEventListener('keydown', tapahtuma => { if(tapahtuma.key === 'Enter') { nostaLangat(nostosyotekentta.value); } }); nostonappula.addEventListener('click', tapahtuma => { nostaLangat(nostosyotekentta.value); }); } if(document.querySelector('.threads.style-grid')) { luoSyoteElementit(); lisaaTapahtumakuuntelijat(); } })();
Ei.
Mulla kyllä on juu tuohon henkilökohtainen ratkaisu mutta en ole jakamassa sitä. Jos olisi joku js tai css koodi niin jakaisin.

1 y 8 mo

Mitä sun konsoli sanoo? Itellä nää ja ei huolen häivääkään ylimääräisestä paskasta. ylilauta.org##.toast-root ylilauta.org##iframe.a ylilauta.org##+js(alert-buster.js)
Pitäskö tää kuvan laatikko hävitä noilla muka? Itellä tulee eka 2-5 kertaa laatikko joka valittaa adblockista ja vasta sit laatikko josta voi klikata ton "don't allow". Ja toi pitää tehdä joka kerta kun avaa laudan uudelle tabille.

1 y 8 mo

Pitäskö tää kuvan laatikko hävitä noilla muka? Itellä tulee eka 2-5 kertaa laatikko joka valittaa adblockista ja vasta sit laatikko josta voi klikata ton "don't allow". Ja toi pitää tehdä joka kerta kun avaa
Mulla tulee jatkuvasti vaikka klikkaa ton. Ennen se on kadonnut tuosta täppää painamalla kokonaan.

1 y 8 mo

Mulla tulee jatkuvasti vaikka klikkaa ton. Ennen se on kadonnut tuosta täppää painamalla kokonaan.
Ota tää pois: ylilauta.org##.warning.toast Toi antaa sen keltasen laatikon tulla yläoikeelle mut ei tuu tota valitusruutua keskelle joka on paljon häiritsevämpi. Siitä keltasesta voi ottaa tekstit pois et vähän pienenee: ylilauta.org##.toast-content > p ylilauta.org##.toast-content > h3

1 y 8 mo

Ota tää pois: ylilauta.org##.warning.toast Toi antaa sen keltasen laatikon tulla yläoikeelle mut ei tuu tota valitusruutua keskelle joka on paljon häiritsevämpi. Siitä keltasesta voi ottaa tekstit pois et vähä
No nyt tulee enää tuollainen.

1 y 8 mo

No nyt tulee enää tuollainen.
Sivun vieritys kyllä kärsii pahoin.

1 y 8 mo

Ota tää pois: ylilauta.org##.warning.toast Toi antaa sen keltasen laatikon tulla yläoikeelle mut ei tuu tota valitusruutua keskelle joka on paljon häiritsevämpi. Siitä keltasesta voi ottaa tekstit pois et vähä
Voiko ton toastin siirtää vähän vasemmalle? Ei siis mitenkään ruudusta ulos piiloon vaan keskemmälle ettei se peitä noita langanhallintaan tarkoitettuja kuvakkeita siinä oikeassa yläkulmassa. Tai vaihtoehtoisesti voiko siirtää noi hallintakuvakkeet sieltä keskemmälle ettei ne jää alle.

1 y 8 mo

Voiko ton toastin siirtää vähän vasemmalle? Ei siis mitenkään ruudusta ulos piiloon vaan keskemmälle ettei se peitä noita langanhallintaan tarkoitettuja kuvakkeita siinä oikeassa yläkulmassa. Tai vaihtoehtoises
Voit klikata sitä ni häipyy hetkellisesti vittuu:D
Remove ads with Gold »

1 y 8 mo

Voit klikata sitä ni häipyy hetkellisesti vittuu:D
No niinhän sen saa, toivoin vaan tyylikkäämpää ratkaisua.
bump, mitenkäs nyt

1 y 5 mo

bump, mitenkäs nyt
?
Ei lataa lisää sivuja jos UBO päällä. Hmmph.
00:02
Alkoi vituttamaan tuo userscript vammailu, joten tuli koodattua tälläinen selainliitännäinen (päivitetty linkki: https://anonfiles.com/ldUfZ7Q8y4/alilauta_xpi) Firefoxille, joka: >poistaa homoiluskriptin sivun alusta >postaa checkTampering() paskan käytöstä >poistaa alert() funktion käytöstä >poistaa mainokset >poistaa paskailmoitukset >poistaa selaincheckin >patchaa javascript moduuleista paskakoodin pois >muokkaa logoa (höhöö :D) Onnea korjaamiseen.

1 y 5 mo

Alkoi vituttamaan tuo userscript vammailu, joten tuli koodattua tälläinen selainliitännäinen (päivitetty linkki: https://anonfiles.com/ldUfZ7Q8y4/alilauta_xpi) Firefoxille, joka: >poistaa homoiluskriptin sivun alusta >po
Muuten hyvä, mutta ei toimi koska varmennus puuttuu

1 y 5 mo

Muuten hyvä, mutta ei toimi koska varmennus puuttuu
Firefoxin devit ovat suuressa viisaudessaan aikoinaan päättäneet estää nuo muista kuin nightly-buildeista. Paras olisi jos tuo olisi defaultina päällä normoja varten, mutta about:configin kautta voisi tehokäyttäjät ottaa pois päältä.

1 y 5 mo

Firefoxin devit ovat suuressa viisaudessaan aikoinaan päättäneet estää nuo muista kuin nightly-buildeista. Paras olisi jos tuo olisi defaultina päällä normoja varten, mutta about:configin kautta voisi tehokäyttäj
Saahan sen asennettua väliaikaisesti kun menee about:debugging ==>This Firefox ==> Load Temporary Add-on... valitsee sen xpi:n ja asentaa sen. Poistuu tosin aina kun sulkee firefoxin eli ei asennu pysyvästi. Vähän riippuen kuinka monta kertaa viikossa suljet firefoxin niin tuo voi olla ärsyttävää tai sitten ei. Tuon kun asentaa niin uBlock kannattaa laittaa pois päältä ylilaudalle koska tuo skripti tekee kaiken tarpeellisen estämisen ihan itse ja uBlock vain rikkoo asioita, mm. rikkonu viime aikoina videoiden toiston ainakin mulla. Ja niille tiedoksi jotka ei halua asentaa tuntematonta paskaa niin xpi on myös oikeasti vain zip tiedosto eli uudelleennimeämällä tuo xpi zip:iksi niin sen voi purkaa ja tutkailla koodia itse. Tai jos on joku 7zip tai muu asennettuna niin sehän avaa minkänimisiä tiedostoliitteitä vaan. Ja jos haluaa muokata itse lisää niin ihan rohkeasti notepadilla vaan editoimaan, pakkaa takaisin zipiksi, vaihda tiedostoliite takaisin xpi:ksi ja lataa firefoxiin. Ei siis vaadi mitään sen kummempaa koodaustyökalujen asentamista. Jos aiot aloittaa koodarin uraa niin miksipä ei tästä. Kynnys on matala.

1 y 5 mo

Saahan sen asennettua väliaikaisesti kun menee about:debugging ==>This Firefox ==> Load Temporary Add-on... valitsee sen xpi:n ja asentaa sen. Poistuu tosin aina kun sulkee firefoxin eli ei asennu pysyvästi. Vähä
Öö lurk moar git gud gatekeeppaus on kyllä ihan paikallaan vieläkin. Miettii vaikka rekryjä
Siinähän se linkki on.
Remove ads with Gold »

1 y 5 mo

Firefoxin devit ovat suuressa viisaudessaan aikoinaan päättäneet estää nuo muista kuin nightly-buildeista. Paras olisi jos tuo olisi defaultina päällä normoja varten, mutta about:configin kautta voisi tehokäyttäj

1 y 5 mo

Saahan sen asennettua väliaikaisesti kun menee about:debugging ==>This Firefox ==> Load Temporary Add-on... valitsee sen xpi:n ja asentaa sen. Poistuu tosin aina kun sulkee firefoxin eli ei asennu pysyvästi. Vähä
Ladatkaa ESR versio niin antaa laittaa about:config sivulta xpinstall.signatures.required pois päältä.
Tässä toinen linkki: https://anonfiles.com/XfY578Q3y6/lauta_xpi Tarvitset tosiaan ESR version Firefoxista, jotta saat asennettua tai teet näin

1 y 5 mo

Saahan sen asennettua väliaikaisesti kun menee about:debugging ==>This Firefox ==> Load Temporary Add-on... valitsee sen xpi:n ja asentaa sen. Poistuu tosin aina kun sulkee firefoxin eli ei asennu pysyvästi. Vähä

1 y 5 mo

Ladatkaa ESR versio niin antaa laittaa about:config sivulta xpinstall.signatures.required pois päältä.

1 y 5 mo

Tässä toinen linkki: https://anonfiles.com/XfY578Q3y6/lauta_xpi Tarvitset tosiaan ESR version Firefoxista, jotta saat asennettua tai teet näin
Onks toi ESR Quantum vai Gecko pohjainen? Silloin kun Quantum tuli, oli ESR vielä Geckolla.

1 y 5 mo

Onks toi ESR Quantum vai Gecko pohjainen? Silloin kun Quantum tuli, oli ESR vielä Geckolla.
Siis sehän on vaan Extended Support Release. Tämänhetkinen uusin ESR versio on muistaakseni 102.6, joka on siis Quantum pohjainen. Mozillan web-moottorin nimihän on silti vielä Gecko.

1 y 5 mo

Siis sehän on vaan Extended Support Release. Tämänhetkinen uusin ESR versio on muistaakseni 102.6, joka on siis Quantum pohjainen. Mozillan web-moottorin nimihän on silti vielä Gecko.
>Mozillan web-moottorin nimihän on silti vielä Gecko. Ok, olin siinä käsityksessä, että Quantum on Rustilla uudelleen luotu Gecko ja varsinaisen Geckon kehitys olisi lopetettu.
Itse poistaisin jo keksejä.
No laita jakoon sitten muillekin. Ei me täällä turhaan pyöritä ja olla osanakin joskus jotain hyvää.
Toit esiin ongelman mitä ei meidän puolelta ole mun henkilökohtaisesta näkökulmasta mietitty tiimissä loppuun asti, kun lähdettiin kiertämään mainostenesto-ohjelmistot. Kehitellään järjestelmä tulevaisuudessa jossa peliongelmaiset eivät saa kasinomainoksia, vaan ne korvautuvat muilla mainoksilla. Mainoksia kuitenkin tulee olemaan tulevaisuudessa ilman kultatiliä. t. ei-Sopsy

1 y 5 mo

Toit esiin ongelman mitä ei meidän puolelta ole mun henkilökohtaisesta näkökulmasta mietitty tiimissä loppuun asti, kun lähdettiin kiertämään mainostenesto-ohjelmistot. Kehitellään järjestelmä tulevaisuudessa jo
>Mainoksia kuitenkin tulee olemaan tulevaisuudessa ilman kultatiliä. Eipä ollu.

1 y 5 mo

>Mainoksia kuitenkin tulee olemaan tulevaisuudessa ilman kultatiliä. Eipä ollu.
Toki custom-lisäosilla varmasti onnistuu niiden poistaminen tulevaisuudessa tai custom-selaimillakin, mutta tällä hetkellä mainosteneston esto alkaa oleen meidän puolelta ratkaistu ongelma. Silti ei käy järkeen mainostaa kasinoita peliongelmaisille (omasta henkilökohtaisesta näkökulmasta, Sopsy varmaan samaa mieltä), joten jokin ratkaisu tuohon täytyy kehittää.
Remove ads with Gold »

1 y 5 mo

Toit esiin ongelman mitä ei meidän puolelta ole mun henkilökohtaisesta näkökulmasta mietitty tiimissä loppuun asti, kun lähdettiin kiertämään mainostenesto-ohjelmistot. Kehitellään järjestelmä tulevaisuudessa jo
Muuten ton popupin kanssa voisi elää, mutta kun se tulee ainakin vielä toisen kerran takaisin kun sitä on jo kerran klikannut, ja se aiheuttaa vitutuksen eksponentiaalisen kasvun.
Joo tänneki vois pistää vähä kultista mullaki on kauhee peli ongelma enkä haluu nähdä yhtää mitää
Sattuisko kenelläkään olemaan tuon adblocker-lisäosan kanssa toimivaa sortteriscriptiä (järjestä viestit tää-äänien mukaan yms.)?
Muistuta mua parin tunnin päästä.

1 y 5 mo

Toit esiin ongelman mitä ei meidän puolelta ole mun henkilökohtaisesta näkökulmasta mietitty tiimissä loppuun asti, kun lähdettiin kiertämään mainostenesto-ohjelmistot. Kehitellään järjestelmä tulevaisuudessa jo
Poistakaa noi paskat kiitos
Roskapostauksien piiloittaja scripta: // ==UserScript== // @name Roskaposti piilottaja - ylilauta.org // @namespace Violentmonkey Scripts // @match https://ylilauta.org/*/* // @grant none // @version 1.0 // @author - // @description 1/26/2023, 10:32:27 AM // ==/UserScript== // Lista roskaposti liitteistä joidenka postaukset haluat piilottaa const spam = [ 'mp4/47/8e/478e1762270827e5-240.jpg' ].map(f => `[src$="https://t.ylilauta.org/${f}"]`); // Funkkari etsimään postauksen HTML elementti function findParentPost(e) { for (var p = e.parentElement; p !== null; p = p.parentElement) { const classes = p.className.split(' '); for (var i = 0; i < classes.length; ++i) { if (classes[i] === 'post') return p; } } // Fallbackina piilota vain kuva return e; } // Piilota postaukset document.querySelectorAll(spam.join(',')).forEach(e => findParentPost(e).style.display = 'none');

1 y 5 mo

Toit esiin ongelman mitä ei meidän puolelta ole mun henkilökohtaisesta näkökulmasta mietitty tiimissä loppuun asti, kun lähdettiin kiertämään mainostenesto-ohjelmistot. Kehitellään järjestelmä tulevaisuudessa jo
Oon mainosoireinen ja saan impulsiivisia pakko-ostoskohtauksia mainoksista. Miten aiotte huomioida kaltaisiani ihmisiä lautanne käytössä ja tarjota kaikille tasa-arvoisen lautailukokemuksen ilman, että mun tarvitsee kohtuuttomasti kärsiä mun sairaudesta? Näkisin, että tämä kuuluu teidän yhteiskuntavastuun alle.

1 y 5 mo

Roskapostauksien piiloittaja scripta: // ==UserScript== // @name Roskaposti piilottaja - ylilauta.org // @namespace Violentmonkey Scripts // @match https://ylilauta.org/*/* // @grant none // @versio
pitäiskö ton toimia tampermonkeylla

1 y 5 mo

Roskapostauksien piiloittaja scripta: // ==UserScript== // @name Roskaposti piilottaja - ylilauta.org // @namespace Violentmonkey Scripts // @match https://ylilauta.org/*/* // @grant none // @versio

1 y 4 mo

pitäiskö ton toimia tampermonkeylla
Ei toimi greasemonkeyllakaan mutta ei myöskään tuolla violentmonkeyllä minkä asensin testin vuoksi.
EI KANNATA
Remove ads with Gold »
Kokeile: ylilauta.org##:root:style(--body-max-width: 100% !important;)
Saako tota kuvien reunoilla käytettyä täyttöväriä nyt jotenkin taustavärin kanssa samaksi. Greasemonkey käytössä.

1 y 4 mo

Kokeile: ylilauta.org##:root:style(--body-max-width: 100% !important;)
Kiitos nopeasta toiminnasta taas, Nyymi!
Tää toimi.

1 y 5 mo

Alkoi vituttamaan tuo userscript vammailu, joten tuli koodattua tälläinen selainliitännäinen (päivitetty linkki: https://anonfiles.com/ldUfZ7Q8y4/alilauta_xpi) Firefoxille, joka: >poistaa homoiluskriptin sivun alusta >po
Jaahas, sopsy taas paskonu lautaa lisää ja samalla tän mainostenestäjän...
Mitäkhän vittua nyt taas tapahtuu, sivun joutuu päivittämään ctrl+F5 jos haluaa, että viestien esikatselu toimii, pystyy käyttämään mitään valikoita tai edes vastaamaan lankaan. User ruleissa pelkästään nämä, eikä niiden poistolla ole tähän tilanteeseen vaikutusta ylilauta.org##:root:style(--body-max-width: 100% !important;) ylilauta.org##.file img:style(background:none !important;) ! timestamp fix ylilauta.org##.time:style(font-size: 0px;) ylilauta.org##.time::before:style(font-size: 0.9rem;) ylilauta.org##.time::before:style(content: attr(title) !important;)

1 y 4 mo

Mitäkhän vittua nyt taas tapahtuu, sivun joutuu päivittämään ctrl+F5 jos haluaa, että viestien esikatselu toimii, pystyy käyttämään mitään valikoita tai edes vastaamaan lankaan. User ruleissa pelkästään nämä, eikä niiden
Jahas, taitaa sitten olla chrome Version 110.0.5481.178 syyllisenä tällä kertaa t. postaan firefoxilla ongelmitta
Nyt vittu SOS, laudan paskominen laitettu ylikierroksille kun leveyden korjaustakaan ei voi enää käyttää ilman että ilmoitusvalikko paskoontuu. Jollain osaavalla korjauksia tähän paskaan?
Käytössäni ollut skripti "Sopsyn homoilublokkeri" näköjään lopetti toimintansa. Ei toimi näppäimet ollenkaan, jos on se päällä.

1 y 3 mo

Käytössäni ollut skripti "Sopsyn homoilublokkeri" näköjään lopetti toimintansa. Ei toimi näppäimet ollenkaan, jos on se päällä.
Jep. Miten pitkälle tämä homoilu voi oikein mennä?
Remove ads with Gold »

1 y 3 mo

Jep. Miten pitkälle tämä homoilu voi oikein mennä?
Liian. Vastaus on valitettavasti liian pitkälle...
Vitun jutkut. Tuntuu laudan JS paskoontuvan, jos on vähänkin jotain omia scriptejä käytössä.
mitä vitun skeidaa tää käytettävyys on taas, voi vitun vittu
Onko joku keittiöpsykologialla vielä keksinyt näiden muutosten ja säätöjen syytä? On niin vammaista ettei pelkkä raha enää selitä tätä.
Siis mitä vittua siellä Maltalla vedetään? Jää jo ryynikännisekoilut kakkoseksi, koko vitun sivu jumissa ja rikki. Tiedän että sopsy on moraaliton jutkurotta mutta ei saatana onnistui taas alittamaan riman, mikä pakkomielle sillä on noihin kasinomainoksiin? Loppu kyllä se vähäinenkin käyttö tähän.
Tällainen homma, eli käytössä Firefox ja Tampermonkey. Ongelma on, että tuolla ylhäällä lukee "No script is running", vaikka yliksellä pyörii 7 skriptiä, ja kaikki ne toimii (ovat siis käytössä vaikka toisin lukee). Kun menee tampermonkey dashboardille, sieltä näkyy että ne on päällä. Mutta jos otan jonkun skriptin pois päältä, ja laitan takaisin päälle, niin se skripti ei toimi enää, kuin vasta sitten kun käynnistän selaimen uusiksi. Myös jos koitan tehdä johonkin aktiiviseen skriptiin muutoksia, ja tallennan, muutokset eivät tule voimaan vaikka päivittää sivun. Vasta selaimen uudelleenkäynnistyksen jälkeen muutokset tulevat voimaan. Ongelma tuli itsestään ja on ollut jo jonkin aikaa, varmaan pari kuukautta. Incognito ikkunassa taas toimii kuten pitää. Näyttää aktiiviset skriptit, muutokset toimii heti yms. E: Ongelma ratkesi jo, piti vaihtaa asetuksista inject mode.
Latauslinkki thumbin alle -skripti. Korjailin skriptiä, poistin edellisen postaukseni. Ulkoasu nyt vähän siistimpi, kuva liittyy. Video-thumbeissa pientä tyylivikaa, play-nappi ja videon kesto siirtyy napin korkeuden verran alaspäin, en jaksa niitä alkaa säätää. Käytän niin paljon hiiren rullaa ja kontekstivalikon tallenna kohde -toimintoa tiedostojen availuun/tallennukseen, että repesi perse tämän viimeisimmän muutoksen myötä, joten väänsin tuommoisen purkkavirityksen, joka lisää thumbien alle linkin itse tiedostoon, kuva liittyy. Oon vaan harrastelija, niin sais varmaan järkevämminkin tehtyä, mutta toimii. Käyttää mutation observeriä, niin lisää linkit myös avoimien lankojen uusiin postauksiin. Lienee raskas, jos sata lankaa auki tai selaat perunalla. Greasemonkey käytössä itsellä, toimii varmaan muillakin vastaavilla. // ==UserScript== // @name Ylilauta link insert // @description Lisää thumbien alapuolelle linkin tiedostoon // @match https://ylilauta.org/* // @version 0.2 // @grant none // @run-at document-start // ==/UserScript== let insertLinks = function() { let filePreviews = document.querySelectorAll(".page-thread figure.file.preview:not([data-link-inserted]"); for(let currentPreview of filePreviews) { let anchor = document.createElement('a'); let anchorText = document.createTextNode('Lataa ↓'); anchor.setAttribute('href', currentPreview.dataset.fileSrc); anchor.setAttribute('style', 'display:inline-block;height:32px;margin-top:0.5rem;'); anchor.classList.add('button'); anchor.appendChild(anchorText); currentPreview.appendChild(anchor); currentPreview.dataset.linkInserted = 'true'; } } let observer = new MutationObserver(mutations => { insertLinks(); }); observer.observe(document.documentElement, {childList: true, subtree: true});

1 y 2 mo

Latauslinkki thumbin alle -skripti. Korjailin skriptiä, poistin edellisen postaukseni. Ulkoasu nyt vähän siistimpi, kuva liittyy. Video-thumbeissa pientä tyylivikaa, play-nappi ja videon kesto siirtyy napin korkeuden ve
Tuosta versio huomaamattomammalla tyylillä. // ==UserScript== // @name Ylilauta link insert // @description Lisää thumbien alanurkkaan linkin tiedostoon // @match https://ylilauta.org/* // @version 0.2.1 // @grant none // @run-at document-start // ==/UserScript== let insertLinks = function() { let filePreviews = document.querySelectorAll(".page-thread figure.file.preview:not([data-link-inserted]"); for(let currentPreview of filePreviews) { let anchor = document.createElement('a'); let anchorText = document.createTextNode('↓'); anchor.setAttribute('href', currentPreview.dataset.fileSrc); anchor.setAttribute('style', 'display:inline-block;height:32px;margin-top:0.5rem;position:absolute;bottom:0;right:0;'); anchor.classList.add('button'); anchor.appendChild(anchorText); currentPreview.appendChild(anchor); currentPreview.dataset.linkInserted = 'true'; } } let observer = new MutationObserver(mutations => { insertLinks(); }); observer.observe(document.documentElement, {childList: true, subtree: true});
Ainakin chromella vissiin tehty nyt ublockin kanssa yliksen käyttö lähes mahdottomaksi, kuvat ei suurene eikä valikko aukea. Onkohan kellään toimivia scriptejä esim violent/tampermonkeylle näihin: >perinteiset timestampit >kuvien ympäriltä nuo vammaiset värjäykset pois >sivuleveys maksimiksi
miksi tällainen ajojahti? eikö suurin osa käyttäjistä ole niin tyhmiä normoja ym. mobiilihomoja, etteivät edes tiedä kiertää mainoksia
Remove ads with Gold »
Kiitos Sopsy
Mikä muutos nyt tullut?
Kiitos.
Kiitos tästä! Mainoksiahan ei kattella saatana.
click
nag screen ei myöskään toiminut eli sai selata rauhassa lol

1 y 1 mo

Kiitos tästä! Mainoksiahan ei kattella saatana.
Näköjään näkyy mainoksia eikä estä vittuakaan kun pistää ton quick fixes pois, miten saa korjattua?
kippis sinulle
Tuosta taas yks kuppanen skripti kun sopsy taas rikkonut jutun mitä käytän, lisää vastauksiin viesti-id:n, joka toimii linkkinä kyseiseen postaukseen. Kuvassa ulkonäkö. // ==UserScript== // @name Ylilauta post ID fix // @description Lisää vastauksiin viesti-id:n linkkinä kyseiseen postaukseen // @match https://ylilauta.org/* // @version 0.0.1 // @grant none // @run-at document-start // ==/UserScript== let insertIds = function() { let postMetas = document.querySelectorAll(".post-meta:not([data-meta-inserted]"); for(let currentMeta of postMetas) { let anchor = document.createElement('a'); let anchorText = document.createTextNode(currentMeta.parentNode.dataset.postId); anchor.setAttribute('href', '#' + currentMeta.parentNode.dataset.postId); anchor.appendChild(anchorText); let sp = currentMeta.getElementsByTagName('span')[0]; currentMeta.insertBefore(anchor, sp); currentMeta.dataset.metaInserted = 'true'; } } let observer = new MutationObserver(mutations => { insertIds(); }); observer.observe(document.documentElement, {childList: true, subtree: true});

1 y

Tuosta taas yks kuppanen skripti kun sopsy taas rikkonut jutun mitä käytän, lisää vastauksiin viesti-id:n, joka toimii linkkinä kyseiseen postaukseen. Kuvassa ulkonäkö. // ==UserScript== // @name Ylilauta post ID
Tai mitä jos vaan laittaa sen asetuksista takaisin :D
Remove ads with Gold »

1 y

Tai mitä jos vaan laittaa sen asetuksista takaisin :D
Asetus tekee siitä vastausnapin, ei linkkiä postaukseen.
Linkin kanssa mulla on vaihtoehto joko avata samaan tabiin tai sitten uuteen, en pidä rajoituksista linkkien normaaliin käyttöön.
Ei pitäis olla vaikeeta ymmärtää että jos mä haluan avata sen samaan tabiin, mä mieluummin klikkaan normaalisti, kuin alan kikkailla jonkun kontekstivalikon kanssa.
Kuinkas timestampit korjataan tällä kertaa? Tämä pätkä toiminut ties kuinka kauan, mutta ei enää: ! timestamp fix ylilauta.org##.time:style(font-size: 0px;) ylilauta.org##.time::before:style(font-size: 0.9rem;) ylilauta.org##.time::before:style(content: attr(title) !important;)

1 y

Kuinkas timestampit korjataan tällä kertaa? Tämä pätkä toiminut ties kuinka kauan, mutta ei enää: ! timestamp fix ylilauta.org##.time:style(font-size: 0px;) ylilauta.org##.time::before:style(font-size: 0.9rem;) ylilauta
Ai, ne saakin asetuksista ilman kikkailua takaisin. Saakos kuitenkin jollakin user rulella tuon postauksien numerot ja kellonaikojen fonttikoon vaihdettua tuosta 0.8rem vaikka 0.9rem?
tosta nopee kuvien laajennus ja latausskripit ekaksi täytyy tosiaan laajentaa kuvat ennen ku voi painaa latausnappulaa nappulat on vähän paskassa paikassa mutta toimii // ==UserScript== // @name Ylis extender // @namespace Violentmonkey Scripts // @author meitsi // @match *://ylilauta.org/*/* // @grant GM_download // @description Laajenna kaikki kuvat ja lataa ne // @version 1.0 // ==/UserScript== function expandAllMedia() { const $$ = (s, o = document)=> Array.from(o.querySelectorAll(s)); $$("picture").forEach(e => e.click()); } function downloadAllMedia() { let thread = document.getElementsByClassName("thread"); let threadId = thread[0].attributes["data-thread-id"].value; let images = document.getElementsByClassName("full-img"); console.log(threadId); let i = 0; for (let image of images) { i++; let fileExt = image.src.split('.').pop(); let fileName = threadId + "-" + i + "." + fileExt; //console.log(fileName); GM_download(image.src, fileName); } } const expandBtn = document.createElement('button'); expandBtn.classList.add('linkbutton'); expandBtn.innerText = 'Laajenna kaikki kuvat'; expandBtn.classList.add("button"); expandBtn.onclick = () => expandAllMedia(); const downloadBtn = document.createElement('button'); downloadBtn.classList.add('linkbutton'); downloadBtn.innerText = 'Lataa kaikki kuvat'; downloadBtn.classList.add("button"); downloadBtn.onclick = () => downloadAllMedia(); const buttonParent = document.querySelector('.navigation'); buttonParent.append(expandBtn); buttonParent.append(downloadBtn);
Ylissuodatin korjattu. https://github.com/testuser3158/ylis-suodatin

1 y

tosta nopee kuvien laajennus ja latausskripit ekaksi täytyy tosiaan laajentaa kuvat ennen ku voi painaa latausnappulaa nappulat on vähän paskassa paikassa mutta toimii // ==UserScript== // @name Ylis extender // @names
Vitun 5/5. Kiitos.
testaan vaan spoiler tagia ei oo keltään pois

9 mo

testaan vaan spoiler tagia ei oo keltään pois
Oletan että tiedän mitä teet, käytä siihen CSS äläkä JS: /* Make spoiler open on hover */ .spoiler { max-height: max-content !important; }.spoiler:hover { background: var(--post-highlighted-block-bg-color); color: inherit; }
Remove ads with Gold »
sipsi taas rikkoi tän mun yläpalkki-lautavalikon niin piti korjata: // ==UserScript== // @name drop down board menu // @namespace ylilauta scripts // @version 0.2 // @description navigate boards using a dropdown menu instead of the sidebar // @author You // @match *://ylilauta.org/* // @icon https://www.google.com/s2/favicons?domain=mozilla.org // @grant GM_addStyle // @require http://code.jquery.com/jquery-3.4.1.min.js // ==/UserScript== const hidden = ["koronavirus", "homoseksuaalisuus", "turri", "hisparefugio", "lusofono", "casinofoorumi", "meemivala", "de"]; const boards = [...document.getElementById('nav-boards').getElementsByTagName("p")].filter((b) => !hidden.includes(b.getAttribute('data-board'))); var navbar = document.getElementById('navbar'); var menu = document.createElement('button'); menu.setAttribute('id', 'btn'); menu.innerText = "B"; var menucontent = document.createElement('div'); menucontent.setAttribute('id', 'wrapper'); boards.forEach(board => { menucontent.appendChild(board); }); navbar.insertBefore(menucontent, navbar.children[1]); navbar.insertBefore(menu, navbar.children[1]); GM_addStyle('#navbar { align-items: start; }'); GM_addStyle('#wrapper { background-color: #333333; }'); $(document).ready(function() { $('#wrapper').hide(); }) $('#btn').click(function() { $('#wrapper').toggle(); }); lisää/poista tosta listalta ne laudat joita haluat/et halua piiloon
00:24
Tulenpa taas vammailemaan tänne, kun ilmeisesti laudan toiminnassa on taas jotain vammailtu >viestin esikatselu ei toimi kun pitää hiirtä vastauksen päällä jos ei päivitä sivua käyttämällä ctrl+f5 >mitkään painikkeet ei toimi jos ei päivitä sivua käyttämällä ctrl+f5 >viestiin vastaaminen ei toimi jos ei päivitä sivua käyttämällä ctrl+f5 Aivan sama onko mainoksenestot tulilla tai täysin lisäosaton selain, ainakin chromella ja firefoxilla. Onko muuten sivun mobiilimoodin ja kuvien taustahämyn poistoon jotain järkevämpää keinoa kuin mainokseneston omiin sääntöihin ylilauta.org##:root:style(--body-max-width: 100% !important;) ylilauta.org##.file img:style(background:none !important;)
Osaisiko joku auttaa, miksi tuo ilmoitusten punainen pylpyrä on pompannut tuonne sivupalkin oikeaan yläkulmaan, vaikka pitäisi olla tuon ilmoituspainikkeen oikeassa yläkulmassa? Tässä parin päivän sisällä tapahtunut. On siis käytössä skripti jolla seuratut ja ilmoitukset painikkeet on sivupalkissa. tossa skripti: (() => { 'use strict'; const sopsy2 = document.getElementsByClassName("icon-bookmark2 followed-button")[0]; document.getElementById("nav-threads").appendChild(sopsy2); var tyyli2 = document.createAttribute("style"); tyyli2.value = "width: 40px;height: 40px;font-size: 24px;margin-right: 15px;margin-top: 10px"; sopsy2.setAttributeNode(tyyli2); const sopsy = document.getElementsByClassName("icon-alarm notifications-button")[0]; document.getElementById("nav-threads").appendChild(sopsy); var tyyli = document.createAttribute("style"); tyyli.value = "width: 40px;height: 40px;font-size: 24px;margin-right: 15px;margin-top: 10px"; sopsy.setAttributeNode(tyyli); document.getElementById("navbar").style.display = "none"; document.getElementById("sidebar").style.top = "0"; })(); ja tässä css jotka äkkisellä silmäyksellä voi vaikuttaa: #content { max-width: 100%; } #navbar { max-width: 100%; } body { max-width: 70%; } #content .navigation { justify-content: left; } #sidebar nav#nav-threads{ display: inline-block; } #sidebar nav a{ padding: 2px; } nav#nav-threads button.followed-button span{ line-height: 1; } nav#nav-threads button.notifications-button span{ line-height: 1; }

4 mo

Osaisiko joku auttaa, miksi tuo ilmoitusten punainen pylpyrä on pompannut tuonne sivupalkin oikeaan yläkulmaan, vaikka pitäisi olla tuon ilmoituspainikkeen oikeassa yläkulmassa? Tässä parin päivän sisällä tapahtunut. O
Lisää position relative tuohon notifikaatio-nappiin vaikka tuonne skriptiin. Tästä: tyyli.value = "width: 40px;height: 40px;font-size: 24px;margin-right: 15px;margin-top: 10px"; Tähän: tyyli.value = "width: 40px;height: 40px;font-size: 24px;margin-right: 15px;margin-top: 10px;position:relative;";

4 mo

Lisää position relative tuohon notifikaatio-nappiin vaikka tuonne skriptiin. Tästä: tyyli.value = "width: 40px;height: 40px;font-size: 24px;margin-right: 15px;margin-top: 10px"; Tähän: tyyli.value = "width: 40p
no sepäs oli helppoa, kiitos

8 mo

sipsi taas rikkoi tän mun yläpalkki-lautavalikon niin piti korjata: // ==UserScript== // @name drop down board menu // @namespace ylilauta scripts // @version 0.2 // @description navigate boards using a
Kappas vois ottaa käyttöön. Ei oo enää jaksanut ite taistella jatkuvaa pilaamista vastataan niin oon siirtynyt muualle koodaamaan.
Olisi pieni probleema selvitettäväksi. Eilen image hover -skripti lakkasi toimimasta, ja syyksi löysin että ei lataa tuohon "style" kohtaan mitä siinä pitäisi olla, vaan on pelkkä "". Miksi näin? Eli kuvassa merkattu skriptin avaama kuva joka pitäisi näkyä näytön oikeassa reunassa kun median päällä pitää kursoria, mutta style puuttuu kokonaan. Samainen ongelma eli tuo tyylin puuttuminen ainakin yhdessä muussa skriptissä . Tuossa vielä koodi: // ==UserScript== // @name Image Hover // @description Suurentaa kuvan tai videon hiirtä sen päällä leijuttamalla // @match https://ylilauta.org/* // @require https://code.jquery.com/jquery-3.1.0.min.js // ==/UserScript== //Avaa tiedoston uuteen välilehteen hiiren rullaa painamalla window.addEventListener('mousedown', function(e) { if (e.which === 2 && e.target.closest('.file')) { e.preventDefault(); window.open(e.target.closest('.file').dataset.fileSrc); } }); $(window).on( "mouseover", function() { $('.post figure.file.preview').hover(function imagehoover() { let imgurl = $(this).closest("figure.file.preview").attr("data-file-src"); if (imgurl !== undefined) { if (/[.mp3 .mp4 .m4a]$/.test(imgurl)) { let windowwidth = $(window).width(); let maxwidth = windowwidth / 2 + 'px'; $('body').append('<video autoplay style="position:fixed;max-width:' + maxwidth + ';max-height:calc(100% - 2px);top:0;right:0px;z-index:9001;" class="hovervideo" src="' + imgurl + '"></video>'); $('video.hovervideo').prop('volume', parseInt(localStorage.getItem('videovolume')) / 100); if (('body').hasClass('hovervideo')) { return; } } else { if ($(this).parent().hasClass('post')) { let imgurl2 = $(this).closest("figure.file.preview").attr("data-file-src"); let windowwidth2 = $(window).width(); let thispos = $(this).offset(); let thiswidth = $(this).outerWidth(true); let maxwidth2 = windowwidth2 - (thispos.left + thiswidth) - 4 + 'px'; $('body').append('<img style="position:fixed;max-width:' + maxwidth2 + ';max-height:100%;top:0px;right:0px;z-index:9001;" class="hoverimage" src="' + imgurl2 + '">'); if (('body').hasClass('hoverimage')) { return; } } } } }, function() { $('body').find('.hoverimage, .hovervideo').remove(); }); }); var observer = new MutationObserver(mutations => { mutations.forEach(({ target }) => { target.querySelectorAll(".threads").forEach((threads) => { console.log(threads) imagehoover(threads) }) }) }) const threads = document.querySelector(".page-board .threads") observer.observe(threads, { childList: true })

3 mo

Olisi pieni probleema selvitettäväksi. Eilen image hover -skripti lakkasi toimimasta, ja syyksi löysin että ei lataa tuohon "style" kohtaan mitä siinä pitäisi olla, vaan on pelkkä "". Miksi näin? Eli kuvassa merkattu skr
Tähän vielä lisäyksenä, media näkyykin avautuvan tuonne sivun alareunaan! Ja nyt muistin että joskus aiemminkin oli sama ongelma, en vain muista ollenkaan että mitä täytyi tehdä tuon korjaamiseksi?
Näin vessassa istuessani heittäisin että laita parent elementtiin arvoksi justify-content: center ja displayksi flex.
https://github.com/testuser3158/ylis-suodatin
Remove ads with Gold »
Miltä se uus nappi näyttää?
Hyi vittu :D
Oon sen verran pireissä että tuijotin varmaan 10 minuuttia sun koodia ja laudan koodia puhelimella ja en kyllä löydä mitään syytä miksi :D Muistuta tunnin päästä ku oon koneella niin pääsen devtoolsseihin.
Etsin tota erityisesti, oon sokea.

2 mo

https://github.com/testuser3158/ylis-suodatin

11 mo

Ylissuodatin korjattu. https://github.com/testuser3158/ylis-suodatin
Voisiko tästä saada pelkästään version, mikä hidettää muut postaukset kuin kuvalliset/videot?
Lankasuodatin skripti, eli piilottaa langat skriptin alussa annettujen sääntöjen mukaan. Lankoja on mahdollista suodattaa tekstillä (kirjainkoolla ei väliä), regexillä, tai css-säännöillä ja piilotetut langat näkee selaimen konsolista. Esimerkkinä oletusasetuksilla piilotetaan kaikki langat jotka sisältävät emojeita, sanan "tinder", otsikon, tai tietyn tiedoston. // ==UserScript== // @name Ylilauta: Lankasuodatin // @match https://ylilauta.org/ // @match https://ylilauta.org/*/ // @match https://ylilauta.org/thread/* // @grant none // @version 1.0 // @description Täällä ei paskoja lankoja pidetä // ==/UserScript== 'use strict'; let filters = [ /\p{Emoji_Presentation}/u, 'tinder', ]; const cssFilters = [ ':has(h3)', // ':has(.post-deleted)', // ':not(.has-file)', ':has(.file[data-file-id="d51175dbfa9155c5"])' ]; // Apply custom styles to hide posts. // The last child has to remain visible at the bottom of the screen, // or the infinite scrolling/auto loading of threads will not work const styleSheet = document.head.appendChild(document.createElement('style')); styleSheet.innerHTML = ` .threads { position: relative; .thread.pala { display: none; &:last-child { display: initial; visibility: hidden; position: absolute; bottom: 0px; } } } `; // Lower case text filters filters = filters.map((filter) => { if (typeof filter === 'string') { return filter.toLowerCase(); } return filter; }); // Hide a thread, and print information about it in the console function hideThread(thread, postText, filter) { let shortText = postText.replaceAll('\n', ' '); shortText = shortText.length > 60 ? shortText.substring(0, 57) + '...' : shortText; const threadLink = 'https://ylilauta.org/thread/' + thread.dataset.threadId; console.groupCollapsed(`🚮 ${shortText}`); console.info(`${threadLink} matched filter %c${filter}`, 'font-weight: bold;'); console.log(postText); console.groupEnd(); thread.classList.add('pala'); } // Check if a specific thread needs to be hidden function filterThread(thread) { const messageElements = thread.querySelectorAll('.subject, .op-post :is(h3, .message, .post-message)'); const postText = [...messageElements].map((elm) => elm.textContent.trim()).join('\n'); const lcPostText = postText.toLowerCase(); for (const cssFilter of cssFilters) { if (thread.matches(cssFilter)) { hideThread(thread, postText, cssFilter); return; } } for (const filter of filters) { const matched = (typeof filter === 'string') ? lcPostText.includes(filter) : filter.test(postText); if (matched) { hideThread(thread, postText, filter); return; } } } // Filter posts on page load document.querySelectorAll('.thread:not(.pala)').forEach(filterThread); // Filter posts loaded by scrolling down window.addEventListener('new-posts-loaded', (e) => { Object.keys(e.detail).forEach((threadId) => { const thread = document.querySelector(`.thread:not(.pala)[data-thread-id="${threadId}"]`); if (!thread) return; filterThread(thread); }); });
Meni tuo sortteri rikki niin väsäsin GPT:n avulla uuden // ==UserScript== // @name Ylis sortterit 4.0 // @version 4.0 // @match https://ylilauta.org/* // ==/UserScript== (() => { const navRight = document.querySelector('nav.navigation div.right'); function isElementInViewport(el) { const rect = el.getBoundingClientRect(); return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); } function scrollToFirstPost() { const firstPost = document.querySelector('.thread-replies .post:not(.op-post)'); if (!firstPost || isElementInViewport(firstPost)) { return; } const answerContainer = document.querySelector('.thread-replies'); const y = answerContainer.getBoundingClientRect().top + window.scrollY; document.documentElement.style.scrollBehavior = 'smooth'; window.scroll(0, y); document.documentElement.style.scrollBehavior = ''; } function createButton(iconClass, onclick) { const btn = document.createElement('button'); btn.classList.add('post-button', iconClass); btn.onclick = e => { e.preventDefault(); onclick(); }; return btn; } function addActionButton(iconClass, onClick) { const btn = createButton(iconClass, onClick); navRight.insertBefore(btn, navRight.firstChild); } function getUpvoteCount(postEl) { return Number(postEl.querySelector('.post-upvotes').getAttribute('data-count')); } function getDownvoteCount(postEl) { return Number(postEl.querySelector('.post-downvotes').getAttribute('data-count')); } function sortAnswers(comparatorFn) { const answers = Array.from(document.querySelectorAll('.thread-replies .post:not(.op-post)')); answers.sort((a, b) => comparatorFn(b) - comparatorFn(a)); for (const answer of answers) { answer.parentNode.appendChild(answer); } } addActionButton('icon-thumbs-down', () => { sortAnswers(getDownvoteCount); scrollToFirstPost(); }); addActionButton('icon-thumbs-up', () => { sortAnswers(getUpvoteCount); scrollToFirstPost(); }); })();
>palaute alalauta poistettu Voivittu huutista :D Koodaan ensviikoksi oman lautani loppuun ja siirryn sinne, olen lautailija niin tarvitsen alleni laudan, en huonoa vitsiä. Onneksi ei ole enää paljoa jäljellä todossa. Tätä paskaa ei enää userscripteillä saa korjattua.

1 mo

>palaute alalauta poistettu Voivittu huutista :D Koodaan ensviikoksi oman lautani loppuun ja siirryn sinne, olen lautailija niin tarvitsen alleni laudan, en huonoa vitsiä. Onneksi ei ole enää paljoa jäljellä todossa. Tät
>palaute alalauta poistettu Löytyy nykyään nimellä "Valitus"
Huutista 😂😂😂
Remove ads with Gold »
Ihan käsittämätön meno päällä kyllä
Katsoin samaa kun meinasin tasovalitusta mennä harrastamaan
Huutia piti tulla kysymään tätä, mutta joo se on poistettu kanssa. Onko nykyajassa joku juttu mikä aiheuttaa ihmisille jotain sekoamista? Tätä laajalla sektorilla havainnoinut
Hienosti kyllä osaavat paskoa suomalaisen lautakulttuurin maan tasalle. Eipä täälläkään enää tarvitse käydä.
Joo ei ollut sen alla Näemmä. En kyllä ymmärrä yhtään miksi se piti poistaa kun siellä ei ollut yhtään offtopicia ja kaikki keskustelu siellä oli alalaudan teeman mukaista.
paree tehä spämmiä.. valitus langat siis satunnaiseen!
Mä niinku loogisesti koitan nyt miettiä tätä ja en tosiaan tajua syvempää IT:tä ja silleen... Mutta lauta toimi mielestäni ihan ok. Se oli pitkään ollut jo samanmoinen toiminnoilta. Mielestäni nuo toiminnot olivat toimivat ja niinsanotusti ajattomat... Onko tähän sekoiluun jotain tietokanta syytä tai jotain millä saisi resursseja vähennettyä = kuluja laudan ylläpidossa? Koitan vaan ihan järkeillä mikä ihmeen syy on rikkoa toimiva asia ja mieleen tulee joku kulu "kehitys" mikä vammailtu aivan päin helvettiä vai mitä ihmettä paskooko nämä scriptit ja muut enemmän tätä lautaa tällä hetkellä, kun se otus on muutellut taas jotain
Ei ole resursseja vähentävää, päin vastoin. Tai no jos nuo numero id:t lähtee kokonaan niin sit minimaalisesti. Scriptit ei pasko lautaa mitenkään.
Joo ei tää paska ota loppuakseen.
Remove ads with Gold »
Ei pysyisi sovelluskaupassa vaikka pääsisi jollain tempulla sinne. 99% sisällöstä ei saisi sovelluksessa näyttää, vaan pitäisi olla linkitys vetkkoselaimeen josta kuvaa/tekstiä voi nauttia
Osaako ap kertoa millä css saan mobiilihomona user id:t numeroiksi? Kokeilin tällä @import '/static/custom-css-snippet/post-ids.css'; Ja nyt user id on kirjaimina tyyliin 5TIBq ja c4gwo jne

1 mo

Osaako ap kertoa millä css saan mobiilihomona user id:t numeroiksi? Kokeilin tällä @import '/static/custom-css-snippet/post-ids.css'; Ja nyt user id on kirjaimina tyyliin 5TIBq ja c4gwo jne
Ei saa css:llä koska tarvii javaskriptin mikä kääntää kirjainrimpsut numeroiksi.
Onlyfans parempi verrokki. Ne taiteilee tosi ohuella narulla. Sovelluksessa ei saa olla [julkisesti näkyvillä] mitään pornoon liittyvää tai muutenkaan epäsopivaa sisältöä. Sellaisen katselu edellyttää sovelluksesta poistumista, linkitys on sallittua. Tähän lasketaan myös käyttäjien tuottama sisältö, koska ylläpitäjä on sovelluskaupan näkökulmasta vastuussa niiden moderoinnista.
Nyt nyysittiin sitten code-elementtikin ja muut muotoilut.

1 mo

>palaute alalauta poistettu Voivittu huutista :D Koodaan ensviikoksi oman lautani loppuun ja siirryn sinne, olen lautailija niin tarvitsen alleni laudan, en huonoa vitsiä. Onneksi ei ole enää paljoa jäljellä todossa. Tät
Ilmotteleppa ku on lauta valmis
Ei saatana mitä nyt taas on pilattu??

1 mo

Ei saatana mitä nyt taas on pilattu??
huutista
[code]test[/code]
:DDDDDDDDD
Remove ads with Gold »
Laudan sinulle koodaa Vituix-Män
Harmi ettei täällä enää voi kertoa mihin kannattaa seuraavaksi suunnata, liian kovat filtterit.

1 mo

Harmi ettei täällä enää voi kertoa mihin kannattaa seuraavaksi suunnata, liian kovat filtterit.
Käytä jotain ROT13-koodausta :D
Ei auta kun nännit tulee.

1 mo

Ei auta kun nännit tulee.
Entäs sitten ROT14-salaus? Sitä ylläpito ei osaakaan avata!
Onko skriptiä millä saisi piilotettua vastaukset jotka ovat saaneet paljon alapeukkuja?

1 mo

Harmi ettei täällä enää voi kertoa mihin kannattaa seuraavaksi suunnata, liian kovat filtterit.
Osuiko arvaus?
Ei
Oisko heittää ublock filtteriä millä saa kultapinnatut langat piiloon?

1 mo

Oisko heittää ublock filtteriä millä saa kultapinnatut langat piiloon?
anna kultaaaa ni kerronxdd
Remove ads with Gold »

1 mo

anna kultaaaa ni kerronxdd
Lopeta ja painu vittuun mun langasta.

1 mo

Oisko heittää ublock filtteriä millä saa kultapinnatut langat piiloon?
ylilauta.org##.thread:has(.icon-pushpin.golden-icon)

1 mo

ylilauta.org##.thread:has(.icon-pushpin.golden-icon)

1 mo

Lopeta ja painu vittuun mun langasta.
:D:D:D

1 mo

Lopeta ja painu vittuun mun langasta.
mitä sä uikutat siinä oisit sit ite antanu skriptin hälle

1 mo

mitä sä uikutat siinä oisit sit ite antanu skriptin hälle

1 mo

mitä sä uikutat siinä oisit sit ite antanu skriptin hälle
En mä puhelimella jaksa alkaa vääntämään kun Dev tools tässä senverran pröööt. Huomenna oisin.
viher- ja sinitekstausten palauttaminen: https://pastebin.com/YNBNRX5i edit: testauksen vuoksi: >viherteksti <siniteksti

1 mo

viher- ja sinitekstausten palauttaminen: https://pastebin.com/YNBNRX5i edit: testauksen vuoksi: >viherteksti <siniteksti
Mitä hyötyä näistä sitten on, kun suurin osa näkee kuitenkin vain yhdenväristä tekstiä?

1 mo

Mitä hyötyä näistä sitten on, kun suurin osa näkee kuitenkin vain yhdenväristä tekstiä?
Tietäjät tietää ja lisäksi Veetit ja Leot ovat ihan hämillään kun koittavat opetella lautaetikettiä.
Remove ads with Gold »

1 mo

Tietäjät tietää ja lisäksi Veetit ja Leot ovat ihan hämillään kun koittavat opetella lautaetikettiä.
Itsehän kyllä vanhasta muistista käytän > ja < mutta haluaisin, että värit näkyisivät kaikille.

1 mo

Itsehän kyllä vanhasta muistista käytän > ja < mutta haluaisin, että värit näkyisivät kaikille.
>mutta haluaisin, että värit näkyisivät kaikille. Niinhän me kaikki haluttaisiin, mutta ylläpidon mielestä meillä ei voi olla mukavia asioita.

1 mo

Mitä hyötyä näistä sitten on, kun suurin osa näkee kuitenkin vain yhdenväristä tekstiä?
Suurin osa vihertekstaa vieläkin, vaikkei noi värit enää näy normaalisti. Mun mielestä helpottaa vihertekstausten lukemista, kun on värit.

1 mo

Suurin osa vihertekstaa vieläkin, vaikkei noi värit enää näy normaalisti. Mun mielestä helpottaa vihertekstausten lukemista, kun on värit.
Tietenkin sen itselleen voi asentaa, mutta vihertekstaus pitäisi palauttaa vihreäksi.

1 mo

Tietenkin sen itselleen voi asentaa, mutta vihertekstaus pitäisi palauttaa vihreäksi.
Jep.
Niitä täältä etsiville viherteksti, vanhat viittaukset, vastauslistat ja postausten id

1 mo

Suurin osa vihertekstaa vieläkin, vaikkei noi värit enää näy normaalisti. Mun mielestä helpottaa vihertekstausten lukemista, kun on värit.
>Suurin osa vihertekstaa vieläkin Varsinkin jos lainaat edellistä kirjoittajaa niin lainattujen rivien sisäistäminen jollain merkillä, usein suurempi kuin > merkillä on ollut olemassa aikojen alusta aikana jolloin tekstiterminaalit olivat mustavalkoisia eikä tekstin väritys ollut edes mahdollista. Tämä käytäntö on täysin validi edelleen ihan riippumatta värjääkö käytetty alusta rivit vihreiksi vai ei. Värikoodaus on huomattavasti nuorempaa perua ja vihertekstaaminen ilmiönä on vielä tuoreempaa. En oikein tiedä miksi Sopsy poisti värityksen koska itse käyttöön se ei mielestäni vaikuta, mahdollisesti ehkä vihertekstaamiseen erillisenä ilmiönä. Itse käytin sitä aina aika konsevatiivisesti eikä vihreän värin puuttuminen ole vaikuttanut siihen ollenkaan.

1 mo

viher- ja sinitekstausten palauttaminen: https://pastebin.com/YNBNRX5i edit: testauksen vuoksi: >viherteksti <siniteksti
kiitoksia tästä

1 mo

Laudan sinulle koodaa Vituix-Män
kyllä
Onko jollain sagen palautusta css:nä?
Remove ads with Gold »

15 d

Onko jollain sagen palautusta css:nä?
Ei ole mahdollista edes JS:ällä.

15 d

Ei ole mahdollista edes JS:ällä.
Joku arvon herra väittää yhdessä langassa näin

15 d

Joku arvon herra väittää yhdessä langassa näin
Burger tagin varmaan joo saa muttei se lankoihin taida vaikuttaa.

15 d

Burger tagin varmaan joo saa muttei se lankoihin taida vaikuttaa.
Aivan, osaisitko tehä tähän koodia?

15 d

Aivan, osaisitko tehä tähän koodia?
Osaisin mutta avaa mielummin vain Dev tools ja sieltä poistat ylimääräiset piilotus CSS hommat niin saat tagin.

15 d

Osaisin mutta avaa mielummin vain Dev tools ja sieltä poistat ylimääräiset piilotus CSS hommat niin saat tagin.
mitäs sitten?

15 d

mitäs sitten?
Kirjota siihen sage

1 mo

Tietenkin sen itselleen voi asentaa, mutta vihertekstaus pitäisi palauttaa vihreäksi.
Miksi se vihertekstaus piti poistaa? Mä en siis vaan käsitä mitä helvetin motiivia oli tuokin poistaa.

15 d

Miksi se vihertekstaus piti poistaa? Mä en siis vaan käsitä mitä helvetin motiivia oli tuokin poistaa.
Ei mitään tietoa. Sen myötä laudan luettavuus heikkeni ja menetettiin oleellinen osa ilmettä.

15 d

Ei mitään tietoa. Sen myötä laudan luettavuus heikkeni ja menetettiin oleellinen osa ilmettä.
Joo ja oleellinen tapa kommunikoida sekä omaperäinen tapa. Ehkä se tulee maksullisena lisäosana minkä voi hankkia.
Remove ads with Gold »

15 d

Kirjota siihen sage

15 d

Kokeile grill

15 d

Kokeile grill
joo on mulla grilll täg :D mut tuota burgeria ettimässä

15 d

joo on mulla grilll täg :D mut tuota burgeria ettimässä
Se on vissiin joku checkbox emt.

15 d

Se on vissiin joku checkbox emt.
Osaisitko tehdä mitenkää? Arvostaisin todella

15 d

Osaisitko tehdä mitenkää? Arvostaisin todella
Osaisin mutten jaksa puhelimella.

15 d

Osaisin mutten jaksa puhelimella.
Jos joskut koneella väsäät nii vastaa tähä sit

1 mo

viher- ja sinitekstausten palauttaminen: https://pastebin.com/YNBNRX5i edit: testauksen vuoksi: >viherteksti <siniteksti
Itsellä lakkaa näiden lainausten klikkaaminen toimimasta tällä skriptillä, eli ei klikatessa siirry enää siihen postaukseen, paitsi joskus satunnaisesti

15 d

Osaisin mutten jaksa puhelimella.
<form> <input type="checkbox" id="sage" name="sage" value="Sage"> <label for="sage">Älä nosta lankaa</label><br> </form> Tälläistä koitin, checkbox tulee, muttei tägiä. Pitäis varmaa jonkin laine payload saada servulle mut mitenköhän se onnistuis, et triggeröis sagen?
Saiks ne viestinumerot jotenki takas ublockilla?
Remove ads with Gold »

11 d

Saiks ne viestinumerot jotenki takas ublockilla?
Js vaatii.
Joko tähän ruudukon roskiin heivaamiseen on tehty skriptit?

10 d

Joko tähän ruudukon roskiin heivaamiseen on tehty skriptit?
Tästä listanäkymä takaisin. Violentmonkeyhin oma scripti tosta ja se myös päälle eli ei kannata kopioida tekstiä jonkun olemassa olevan scriptin jatkeeks. // ==UserScript== // @name Lista // @namespace Violentmonkey Scripts // @match https://ylilauta.org/* // @grant none // @version 1.3 // @description 6/27/2024, 8:22:20 PM // ==/UserScript== (function() { 'use strict'; const isCatalogView = window.location.hash.includes('#catalog'); const threadCache = new Map(); const boardPath = window.location.pathname.split('/').filter(Boolean)[0]; const listUrl = `${window.location.origin}/${boardPath}/`; function addCatalogButton() { const navRight = document.querySelector('nav.right'); if (navRight) { const button = document.createElement('button'); button.textContent = isCatalogView ? 'Takaisin' : 'Katalogi'; button.classList.add('button-dropdown'); button.style.fontSize = '14px'; button.addEventListener('click', () => { const url = isCatalogView ? window.location.href.split('#')[0] : `${window.location.origin}${window.location.pathname}#catalog`; window.location.href = url; window.location.reload(); }); const sortButton = navRight.querySelector('.icon-sort-amount-desc'); if (sortButton) { sortButton.before(button); } else { navRight.prepend(button); } } } async function fetchThreadIDs() { try { const response = await fetch(listUrl, { credentials: 'same-origin' }); const text = await response.text(); const doc = new DOMParser().parseFromString(text, 'text/html'); return Array.from(doc.querySelectorAll('.thread')).map(thread => thread.dataset.threadId); } catch (error) { console.error(error); return []; } } async function fetchThreadContent(threadID) { if (threadCache.has(threadID)) { return threadCache.get(threadID); } try { const response = await fetch(`${window.location.origin}/${boardPath}/${threadID}`, { credentials: 'same-origin' }); const text = await response.text(); const doc = new DOMParser().parseFromString(text, 'text/html'); const threadElement = doc.querySelector(`.thread[data-thread-id="${threadID}"]`); if (threadElement) { const container = threadElement.cloneNode(false); const firstPost = threadElement.querySelector('.post'); const threadReplies = threadElement.querySelector('.thread-replies'); const replyPosts = threadReplies ? Array.from(threadReplies.querySelectorAll('.post')) : []; const lastThreeReplies = replyPosts.slice(-3); const threadMeta = threadElement.querySelector('.thread-meta'); if (firstPost) { const clonedFirstPost = firstPost.cloneNode(true); addReplyButton(clonedFirstPost, threadID); container.appendChild(clonedFirstPost); } if (threadReplies) { const clonedReplies = threadReplies.cloneNode(false); clonedReplies.style.paddingBottom = '10px'; lastThreeReplies.forEach(reply => { const clonedReply = reply.cloneNode(true); clonedReplies.appendChild(clonedReply); }); container.appendChild(clonedReplies); } if (threadMeta) { const clonedThreadMeta = threadMeta.cloneNode(true); container.appendChild(clonedThreadMeta); } threadCache.set(threadID, container); return container; } return null; } catch (error) { console.error(error); return null; } } function addReplyButton(postElement, threadID) { const postMeta = postElement.querySelector('.post-meta'); if (postMeta) { const replyButton = document.createElement('button'); replyButton.textContent = 'Vastaa'; replyButton.classList.add('post-button'); replyButton.style.fontSize = '14px'; replyButton.addEventListener('click', () => { window.location.href = `${window.location.origin}/${boardPath}/${threadID}`; }); const menuButton = postMeta.querySelector('.icon-menu'); if (menuButton) { menuButton.after(replyButton); } else { postMeta.appendChild(replyButton); } } } async function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function loadMoreThreads(observer) { const threadContainer = document.querySelector('.style-list'); if (threadContainer) { const threadIDs = await fetchThreadIDs(); for (const threadID of threadIDs) { const threadContent = await fetchThreadContent(threadID); if (threadContent) { threadContainer.appendChild(threadContent); } await delay(4); } const threads = document.querySelectorAll('.style-list .thread'); if (threads.length !== 0) { observer.observe(threads[threads.length - 1]); } } } function debounce(func, wait) { let timeout; return function(...args) { clearTimeout(timeout); timeout = setTimeout(() => func.apply(this, args), wait); }; } function initializeInfiniteScroll() { const observer = new IntersectionObserver(debounce(async (entries, observer) => { for (const entry of entries) { if (entry.isIntersecting) { observer.unobserve(entry.target); await loadMoreThreads(observer); } } }, 100), { root: null, rootMargin: '0px', threshold: 1.0 }); const threads = document.querySelectorAll('.style-list .thread'); if (threads.length !== 0) { observer.observe(threads[threads.length - 1]); } } async function initializeListView() { const threadContainer = document.querySelector('.threads'); if (threadContainer) { threadContainer.classList.remove('threads'); threadContainer.classList.add('style-list'); threadContainer.innerHTML = ''; const threadIDs = await fetchThreadIDs(); for (const threadID of threadIDs) { const threadContent = await fetchThreadContent(threadID); if (threadContent) { threadContainer.appendChild(threadContent); } await delay(4); } initializeInfiniteScroll(); } } if (isCatalogView) { addCatalogButton(); } else { addCatalogButton(); initializeListView(); } })();

4 d

Tästä listanäkymä takaisin. Violentmonkeyhin oma scripti tosta ja se myös päälle eli ei kannata kopioida tekstiä jonkun olemassa olevan scriptin jatkeeks. // ==UserScript== // @name Lista // @namespace
NO NYT!

4 d

NO NYT!
Tossa on nyymin lanka joka ton teki. Siellä on jo korjattu versio tosta edellisestä https://ylilauta.org/yleinen/91xEw
Eipä toimi enää viestinumerot

3 d

Eipä toimi enää viestinumerot
Aijaa

3 d

Eipä toimi enää viestinumerot
toimii toimii
Voiko langat-näkymässä muunnella vertikaalisessa akselissa näkyvien lankojen lukumäärää? Jostain syystä puhelimen näkymässä kuvan mukaisesti yksi lanka peittää sivusuunnassa koko tilan.

3 d

Voiko langat-näkymässä muunnella vertikaalisessa akselissa näkyvien lankojen lukumäärää? Jostain syystä puhelimen näkymässä kuvan mukaisesti yksi lanka peittää sivusuunnassa koko tilan.
@media (max-width: 360px) { .threads { grid-template-columns: 1fr 1fr; } .card { min-width: 0; } } tolla pitäis toimia
Remove ads with Gold »

3 d

@media (max-width: 360px) { .threads { grid-template-columns: 1fr 1fr; } .card { min-width: 0; } } tolla pitäis toimia
Noniin! Kiitos paljon, tuo toimii.
onko mahdollista saada viestin id näkymään numeroina eikä esim. H5PXD

3 d

@media (max-width: 360px) { .threads { grid-template-columns: 1fr 1fr; } .card { min-width: 0; } } tolla pitäis toimia

3 h

onko mahdollista saada viestin id näkymään numeroina eikä esim. H5PXD
Joo. Odota tunti kaks.

3 h

onko mahdollista saada viestin id näkymään numeroina eikä esim. H5PXD
Ei kyl oo :(

2 h

Ei kyl oo :(
no kerroppa miten

2 h

no kerroppa miten
Tossa langassa on lopussa ohjeita millä tän saa palautettua lähestulkoon siihen mitä tää joskus oli https://ylilauta.org/tietotekniikka/8o04M

Please log in or create an account to post on this board.

546 replies by 143 users
Remove ads with Gold »