- Vélemény: nem úgy tűnik, de Lip-Bu Tan most menti meg az Intelt
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Amazon Kindle
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Samsung LCD és LED TV-k
- Házimozi haladó szinten
- Amlogic S905, S912 processzoros készülékek
- DUNE médialejátszók topicja
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Így nézz tévét 2025-ben: új ajánlások, régi szabályok
-
PROHARDVER!
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
martonx
veterán
-
martonx
veterán
Tanulni mindig jó és hasznos. Kiábrándítani nem akarlak, de ez nem olyan ötlet, amiből valaha is haszon lesz, mindegy, hogy a google látja-e vagy sem.
Tanuláshoz irányok, amiket javaslok:
1. Szerver oldali frameworkök. Ha eddig PHP-ztél, és elégedett vagy vele, akkor valami értelmesebb PHP frameworköt javaslok, mint pl. Laravel, Yii, vagy azt se tudom mik a trendi PHP frameworkök mostanában.
2. Kliens oldali frameworkök. Ezek valóban nem barátai a SEO-nak, de manapság egyre kevésbé megkerülhetőek. Vuejs, React, Angular, Svelte (még talán ez utóbbi a legmegfelelőbb a SEO barát weboldalak kicsit erősebb interaktív irányba felokosítására).
3. Ezt csak nagyon óvatosan mondom, mert ez nagyon szubjektív, de én a helyedben elgondolkodnék az aranyos, játszós nyelv PHP helyett (öhm, tudom hogy most szereztem egy rakás ellenséget, és sokan a szívükhöz kapnak), valami komolyabb, teljesítmény orientált nyelvre váltani backenden pl. Java (Spring), C# (Asp.Net Core), Go (nem tudom milyen frameworkök léteznek hozzá) mennek mostanában. Én személy szerint az Asp.Net Core-ra esküszök, de mondom ez nagyon szubjektív -
martonx
veterán
-
martonx
veterán
Ha egy url /-el kezdődik, akkor az jelenti azt, hogy a root url-hez képest.
Azaz a helyes megoldás a "/js/script.j?v=1.0.0"
A teljes elérési útvonalas megoldás is jó még, de ennek csak akkor van értelme ha pl. CDN-t használsz.
A // kezdetű ugyanez, csak az megengedi mind a http, mind a https-t, egy időben divat volt, de http-t már senki nem használ, szóval értelmetlen. -
martonx
veterán
Ne lighthouse-ban (böngésző F12) nézd, hanem a pagespeed weboldalán a google-nek: PageSpeed Insights (web.dev)
És itt is igaziból mostanra egyedül a mobilos szám számít, a google már csak ezt veszi bele a rangsorolásba. -
-
martonx
veterán
Css és Js file-okat valóban érdemes összevonni (ezt hívják bundle-nek).
Viszont ettől függetlenül a SEO legnagyobb barátja a server side rendering. Minden más, ami nem server side renderelődik, kétesélyes hogy megjelenik a google bot számára.
800kbyte js, óriási. Ha a google bot valami css, js-t nem tud X másodperc (de ez inkább kisebb, mint 1) alatt betölteni, akkor inkább hagyja a fenébe, nincs ideje szarakodni a lassú weboldalakkal.
Nem véletlenül írtam le, hogy nem kellene mindeféle szart behúzkodni kliens oldalra, mint pl. axios, amik csak totál feleslegesen növelik a bundle size-ot, és lassítják le az oldalt, rontják a pagespeedet. Cserébe legalább semmit sem adnak -
-
martonx
veterán
Jól használod. @nevemfel csak azt jegyezte meg, hogy ez ugyan egy tök jó módszer, csak nagyon törékeny, mert nagyon könnyű elfelejteni a huszonyolcadik file-ban is átírni a verziószámot. Vagy pedig külön automatizmust érdemes rá készíteni.
A böngésző teljes url alapján cache-el. És ezt használja ki ez a módszer. Az már csak, nekünk embereknek fontos, hogy olvasmányos ?v=1.0.0 legyen az url vége. Ez itt lehetne ?myversion=kiskutya is a böngészőnek édesmindegy. Ezt becacheli, és amíg pontosan ugyanez az url kell, addig cacheből szedi elő, amit kell. Ennyi.
-
martonx
veterán
A kettőt összekombinálni is lehet ám
Pl. csak a html file-ra beállítani, hogy mindig töltse le a böngésző. A többi file-t pedig hagyni a böngésző a megadott verzió szám alapján eldöntse, hogy le kell-e töltenie.Mert a nálad lévő módszer tök jó, de mi van akkor, ha maga a html file cachelődött be a böngészőben? Akkor hiába raksz ki egy új html file-t, amiben megemelted a css, js verziókat, ha erről a böngésző mit sem fog tudni, és vígan használja az előző html-edet, benne a régi verziójú css, js hivatkozásokkal?
-
martonx
veterán
-
martonx
veterán
válasz
nevemfel #9056 üzenetére
Igen, bár tegyük hozzá, hogy nem csak harmadik féltől jöhetnek ártó kódok
Elég ha valaki location.href = 'myhackersite.url' user névvel regisztrál be, és a felületen megjelenítik a user nevet
Szóval persze biztonsági kockázat, de nem annyira ördögtől való (pláne nem a modern js frameworkök előtt) összerakni a html-t, saját backend hívásokból.
Ezért is írtam:
1. megoldás: újraírni a rendszert
2. checkmarx-nál 100% biztos vagyok, hogy lehet paraméterezni, hogy mire riasszon be, és mire ne. Ez esetben a fejlesztő, ha biztos benne, hogy ezek nem 3rd party url hívások, és kivédte, hogy nem kerülhet ártó szándékú js a saját adatbázisba, akkor igaziból nulla a kockázat. -
martonx
veterán
válasz
lafaty80 #9043 üzenetére
Az a baj, hogy ez nem js kérdés.
Önmagában, amit vizsgálnak valóban tud biztonsági probléma lenni, azaz a hiba jelzésük korrekt.
Bármikor előfordulhat, hogy amit ily módon betöltesz, abban van valami vicces javascript.
Ezt ők nyilván nem is fogják tudni helyetted megoldani. Gondolnám, hogy valahogy lehet azért a checkmarx-ot paraméterezni, hogy mire riasszon be, és mire nem.Szóval a lehetőséeig szerintem az alábbiak:
1. újraírod a programodat, hogy abszolút ne használj ilyen js oldani utólagos kód betöltéseket(pl. mindent server side renderelsz, vagy ezeréves jquery helyett elkezdesz modern frameworköket használni Vuejs/React/Angular)
2. felparaméterezed a checkmarxot / felveszed a supportjukkal a kapcsolatot, hogy ignorálja ezt a biztonsági hibát. -
martonx
veterán
Épp a napokban futottam bele az esetbe. Amikor valami garázs cégtől egy direkt dedikáltan ideiglenes megoldást kértem, mert rövid időn belül mindenestől ki fogjuk dobni.
4 oldalból áll, ebből az első kettőn egy szál form van, submit-ra ajaxolnak, a maradék kettőn némi animáció, és 1-1 gomb, amikre routing, illetve ani8máció történik. És ennyi.
Na, most ezt a szerencsétlenek react-tal oldották meg, typescripttel, és napokig fejlesztett ezen 2 ember.
Szóval én látom, hogy mi az az eset, amikre te gondolsz. Viszont te nem látod a másik oldalt, amikor valaki egy tényleg komplex weboldalt készít (akár csak gondolj egy webshopra, checkout-tal, vagy bármi komolyabb web app pl. Slack, Skype webes kliens). -
martonx
veterán
Ne hülyéskedjünk már.
Én vagyok a keretrendszerek legnagyobb ellenzője, de ez amit te csinálsz ez már könyörög legalább egy Svelte behúzásáért, és használatáért.
Vagy pedig valamit őrületesen félre értettél, és amit valójában akarsz, az a meglévő DOM-ban pár apróbb módosítás, amihez meg felesleges ennyi körítés.
Szerintem. -
martonx
veterán
Hol írtad, hog mi a célod?
Én a helyedben megnézném a dokumentációját ennek a js chartnak.
Documentation 21.1: DevExtreme - JavaScript Chart Configuration (devexpress.com)
Hoppá, de hisz itt vannak jsfiddle példák is. Ez esetben sok sikert! -
martonx
veterán
Understanding lazy loading in JavaScript - LogRocket Blog ezt érdemes végigolvasnod, jól összeszed mindent a témában.
-
martonx
veterán
Közben utána néztem, és a default dropdown-nál nem tudsz ilyet csinálni.
A nem defaultokat pedig nem szeretem
Szóval szerintem inkább abba az irányba mozdulj el, hogy eleve nem is select-et használsz, ha cél, hogy minden opció látszódjon, hanem pl. rádió gombokat vagy maradhat a select, és kapjon egy multiple attribútumot. -
martonx
veterán
Azure-nak van erre egy tök jó megoldása SignalR a neve.
-
martonx
veterán
A helyedben itt néznék szét: Documentation 21.1: DevExtreme - JavaScript Data Grid (devexpress.com)
Már ha jól tévedek, ezt a grid-et használták (no persze, hogy miért használna valaki fizetős grid komponenst az számomra rejtély). -
martonx
veterán
Azért ez elég rizikós, és nem túl jövőálló megoldás, noha per pillanat még működik: Document.execCommand() - Web APIs | MDN (mozilla.org)
-
martonx
veterán
Gondolom ez lehet: Clipboard API - Web APIs | MDN (mozilla.org)
-
-
martonx
veterán
válasz
lanszelot #8694 üzenetére
Felveszed az élelmiszerek listáját, és mindegyikhez megadod, hogy melyik diétához jó, illetve melyik zárja ki.
Utána, amikor szűrsz, már csak azokat az ételeket kell elővenned, amelyek az összes megadott diétához engedélyezettek, és semelyik megadott diétához nincsenek tiltva.
Ennyi. -
-
martonx
veterán
A localStorage írás nem tud hibázni. Ráadásul faék könnyen ellenőrizheted, hogy mi van éppen a localstorage-ban, sikerült-e az írás.
Mivel semmit nem tudunk a rendszeredről, ezért azt sem tudhatjuk, hogy esetleg van-e valami ultraspéci jogosultsági probléma. Vagy hehe, a kódod el sem jut az írásig, csak te azt hiszed, hogy eljut. De ezt is csak te tudod ellenőriznilocalStorage.setItem('myKey', 'myValue');
Ha ez mindenkinél működik, csak éppen te vagy az egyetlen, akinél nem, akkor szerinted ebben ki tud neked segíteni?
-
martonx
veterán
Egy kicsit tovább szépítve cstomee példáját: Edit fiddle - JSFiddle - Code Playground
Taci, az nem baj, hogy értelmesen leírod, hogy mit szeretnél, mert sokszor olyankor jön rá az ember, hogy még megfogalmazni sem tudja, nem hogy megvalósítani.
De egy működő jsfiddle példa száz szónál is többet ér -
martonx
veterán
Netán ha kaphatnánk működő konkrét példát html-el? Az mondjuk így ránézésre látszik, hogy amit tippre pár sor kóddal meg lehetne oldani, te 29 teleírt sorból oldottad meg.
Szóval komolyabban bele se néztem, mert ez így biztos, hogy nem jóés nem működő példa híján, hogy az 5 sor helyett, 29 sorban hol a hiba....
-
martonx
veterán
-
martonx
veterán
Az én javaslatom, ami szerintem A megoldás, még ha elsőre komplexnek is hathat a js-es barkácsmódszerekhez képest:
Egyrészt, ha mindent jól csináltál, akkor css media query-ket használtál, azaz tisztán css-ben dől el, hogy ez a div block vagy flex (ezen kicsit elmosolyodtam, hiszen a flex pont erre való, hogy ne kelljen media query-ket se használni, de te tudod, hogy miért jó hol block, hol flex-ként használni, szóval nekem már eleve itt bűzlik valami
).
A tisztán css-es megoldásból kiindulva, csak annyit kell tenned, hogy csinálsz egy css class-t, amit hívj mondjuk .hidden-nek, amiben egyetlen egy rule van: display: none !important;
Alapból oldal betöltésnél ezen a div-en legyen rajta ez a hidden class. Ezzel elérve, hogy betöltéskor ez az elemed nem fog látszódni. Ha minden igaz, akkor ezt eddig is így csináltad, ha viszont nem, akkor máris nem hiába koptattam a billentyűzetet.És amikor gombnyomásra vissza akarod hozni láthatóvá, akkor elég lesz csak ezt a class-t leszedni róla
document.getElementById("bazinga").addEventListener('click', event => {
document.getElementById("walami").classList.remove('hidden'); // fejből írtam, nem biztos, hogy hibátlan...
});és voilá, ekkor máris a tisztán css-ben, az adott szabályoknak megfelelő display lesz rá érvényes
és így nem kell js-ben találgatni, hiszen a js nem erre való (függetlenül attól, hogy js-ben is meg lehet oldani). Separation of Concerns.
-
martonx
veterán
Én C#-pal egyik régi projektben évek óta használok SignalR-t. És nemrég egy POC erejéig az Azure-os Serverless SignalR-t is kipróbáltam. Szépen tette a dolgát. Viszont tagadhatatlan, hogy nem éppen kezdőbarát a dolog.
És hogy ez nodejs-el mennyire működik, arról lövésem sincs. -
martonx
veterán
"A "php" a javascript szerver oldali párja."
Azért az megvan, hogy böngészőben javascript mellett csak webassembly létezik, míg szerver oldalon kismillió nyelven ki tudsz szolgálni egy oldalt?
Ne tegyünk úgy, mintha a PHP lenne az egyetlen nyelv szerver oldalon. Ráadásul neki a családfához lehet, hogy tényleg nem is fog kelleni szerver oldal, csak egy statikus oldal. -
martonx
veterán
Ez erősen attól függ.
1. ha valami mv* frameworköt használsz, akkor azoknál alap, hogy a html-be írod az eseménykezelőt. Pl. react, vuejs, svelte, angular
2. minden más esetben SZERINTEM az a tiszta, ha a js kódot elkülöníted a html-től, ugyanúgy ahogy css-t is külön illik kezelni, noha ez is mind mehetne html style-ba az elementekre. -
martonx
veterán
válasz
lanszelot #8500 üzenetére
Én tavaly karácsonykor pár nap alatt összedobtam a családomnak egy családfát. Mondjuk ebben egy meglévő gráf rajzoló komponenst használtam fel. A pár nap is azért kellett, mert több, mint 100 családtag kapcsolatait, képeit kellett feltöltenem. Mivel tele van személyes adatokkal így nem szeretném kiadni a kódját a kezeim közül.
Emlékeim szerint anno küldtem is pár példa kódot belőle, nem látom, hogy most mi mást tudnék ehhez hozzátenni? -
-
martonx
veterán
válasz
lanszelot #8464 üzenetére
Szia!
Csináltam neked egy ilyen példát:
Html:
<html><head> <title>Local json fetcher</title></head><body> <h1>Hello my json fetcher</h1> <div id="preview"></div> <script src="/index.js"></script></body></html>
Js:
(async () => { const previewElement = document.getElementById('preview'); const response = await fetch('data.json'); const jsonString = await response.text(); const myObject = JSON.parse(jsonString); myObject.users.forEach(user => { const newDiv = document.createElement('div'); newDiv.innerText = user.name; previewElement.appendChild(newDiv); });})()
Json:
{ "users": [ { "id": 1, "name": "Víz Elek" }, { "id": 2, "name": "Flex Elek" } ]}
Mivel localban csináltam, localban teszteltem, ez így garantáltan működik
Remélem segítettem, és remélem ezt a megoldást kerested!u.i: nem tudom miért ilyen fos a PH-s kódformázás, de mindegy, majd magadnál szépre átformázod, ezt a pár sor kódot.
-
martonx
veterán
válasz
lanszelot #8447 üzenetére
"Te pl azt állítottad, a javascript semmire se jó, és teljesen felesleges." - mutasd már meg, hogy hol állítottam?
Várj, ne mutasd, nem érdekel
Pont azt próbáltam elmagyarázni, hogy mennyire eltérően kell használni a javascriptet a futtatási környezettől. De képtelen vagy megérteni.
Szóval részemről peace és ignore, nem az én problémám, hogy képtelen vagy a valóságot elfogadni -
martonx
veterán
Most meg amit összekeversz, az egy winforms alkalmazásban futtatott webview, ami ha jól tudom Internet Explorer alapú. Mintha .Net Core latest winforms-nál már lenne valami webview2, ami már normál latest chromium alapú.
Igaziból a winforms-hoz nagyon nem értek, fogalmam sincs, hogy az ebben futtatott webview mennyire tud kommunikálni az app más részeivel, de vannak kétségeim.Amit te szeretnél arra az Electront, és ehhez hasonlókat szokták használni, amikkel a html+css+js kódodat be tudod csomagolni egy natív appba, azon keresztül elérve az OS apijait.
Új hozzászólás Aktív témák
Hirdetés
- Vélemény: nem úgy tűnik, de Lip-Bu Tan most menti meg az Intelt
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Medence topik
- Mibe tegyem a megtakarításaimat?
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- A OnePlus ellen biztonsági aggályok miatt indítanának vizsgálatot az USA-ban
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- Elektromos autók - motorok
- One otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- LG 39GS95UE - 39" Ívelt OLED / QHD 2K / 240Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- Bomba ár! Dell Latitude E7270 - i7-6GEN I 8GB I 256GB SSD I 12,5" FHD I HDMI I CAM I W10 I Gari!
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X3D 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5070 GAMER PC termékbeszámítással
- LG 34GS95UE - 34" Ívelt OLED / QHD 2K / 240Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest