- Az AI miatt vehetnek sokan új iPhone-t
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Xiaomi AX3600 WiFi 6 AIoT Router
- Musk betiltja az iPhone-okat a Teslánál és az X-nél, ha ezt meglépi az Apple
- JavaScript topic
- Facebook és Messenger
- Nem szavazza meg Musk 56 milliárd dolláros csomagját a norvég állami vagyonalap
- Ömlenek a fiatalok a Facebookra
- Docker konténerizálás
- Aliexpress tapasztalatok
-
IT café
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
-
Taci
addikt
Sziasztok!
Adott az alábbi típusú HTML elem:
<a id="category1"
href="https://pelda.hu/category1"
onclick="funkcio('categories', 'category1'); return false;">
Category1
</a>
Ezeket szeretném megcsinálni úgy, hogy ne legyen a HTML kódban az onclick esemény:
<a id="category1"
href="https://pelda.hu/category1">
Category1
</a>
Ezt a kódot készítettem hozzá:
for (var i = 0; i < categoriesArray.length; i++){
var element = document.getElementById(categoriesArray[i]);
element.addEventListener("click", function(e){
funkcio(0, categoriesArray[i]);
//alert('element: ' + element);
e.preventDefault();
});
}
Azt szeretném, hogy menjen végig a tömb összes elemén (amik az elemek ID-jai), majd mindegyikhez állítsa be, hogy kattintás esetén fusson le a funkcio() függvény (csak a példa kedvéért a név) paraméterként a tömbelemet megkapva. A preventDefault azért kell, hogy ilyenkor ne kövesse a href linkjét.
Az alertet azért raktam bele, hogy lássam, mit csinál - és azt látom, hogy az összes elemnél a tömb utolsó elemét mutatja.
Elég sok találat van rá neten (például ez), de eddig egyikkel sem sikerült megoldanom.
Tudnátok segíteni benne? Köszönöm. -
Taci
addikt
válasz martonx #9202 üzenetére
Ahogy most van:
https://jsfiddle.net/swndoygm/Ahogy szeretném, de nem áll össze:
https://jsfiddle.net/swndoygm/1/Köszönöm.
-
martonx
veterán
-
Taci
addikt
válasz martonx #9206 üzenetére
Azt hogyan lehetne szépen kezelni, ha a többi elem csak később generálódik?
Esetemben görgetés után, de a példában úgy csináltam, hogy 1mp után tölti be a 3. és 4. elemet:
https://jsfiddle.net/vsecyd1t/Ha így oldom meg:
https://jsfiddle.net/vsecyd1t/2/
akkor az összes elemre újra megcsinálja. 4 elemnél még oké, de ha esetemben már a 200. elemnél jár a görgetésben, akkor az már pazarlás.Plusz a 3. és 4. elem betöltése után ha az 1. vagy a 2. elemre kattintok, duplán hívja meg a funkciót. (A másik alertet direkt kiszedtem, hogy egyértelmű legyen, hogy mikor hív duplán.)
Hogyan lehetne ezt jól megoldani?
Köszönöm. -
martonx
veterán
-
RedHarlow
aktív tag
Sziasztok,
Azt meg lehet oldani JS-vel, hogyha a billentyűzet-en lenyomják a jobbra irányt akkor megnyomódjon egy gomb az oldalon id alapján? Lehet ezt figyelni?
Előre is köszönöm a segítséget. : )
-
Taci
addikt
válasz martonx #9212 üzenetére
https://jsfiddle.net/n5ap87gh/
A jobbra gombot majd úgy nyomd, ha előtte belekattintottál a jobb alsó területbe, ahova a gombot is generálja.
Jaj bocs, eggyel lejjebb akart menni a válasz.
[ Szerkesztve ]
-
Sziasztok!
Adott egy HTML oldal, melyen az alábbi azonosítókkal ellátott elemek vannak:
<div id="element1"></div>
<div id="element2"></div>
<div id="element3"></div>
<div id="element4"></div>
<div id="element5"></div>Erre írnék egy scriptet, ami vizsgálja őket (1-sokáig). Viszont, mivel az elemek száma folyamatosan nő, a JS-be pedig nem óhajtok belenyúlni, így olyan kérdésem lenne, hogyha a program rákeres (az itt lévő minta alapján)
<div id="element6"></div>
-ra, ami nem létezik, van-e lehetőség rá, hogy ne Console hibával lépjen ki, hanem valahogyan jelezze (akár alert elemmel), hogy az amire rákeresett nem létezik és normálisan, hiba generálása nélkül álljon le?
Ugyanis ha hibával áll le, akkor nem folytatja a futását a program, márpedig lennének még sorok alattaElőre is köszönöm a válaszokat!
But who is watching the guardians?
-
disy68
aktív tag
Miért van szükség, hogy mindegyiknek legyen id-ja?
A kérdésed alapján az a gyanúm, hogy valami loop-ban keresel getElementById-val ahelyett, hogy pl. kapna minden elem egy azonos class-t és lekérnéd az összeset egyszerre egyquerySelectorAll('.közösclass')
-al és fel sem merülne ez az egész.“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
-
-
Taci
addikt
Sziasztok!
Szeretném azt elérni, hogy ha egy adott szkript (külső JS fájl) nem tölt be, akkor az adott div tartalma kiürítésre kerüljön még feldolgozás előtt, sőt, ha lehet, be se töltődjön:
https://jsfiddle.net/byvfcex0/Most egyelőre kb. csak így tudtam megoldani, ahogy a példában van, viszont a Network tabon látszódik, hogy ettől a div tartalmát még feldolgozza nyilván, a képet is betölti, és csak utána üríti - és ez így nem a legjobb.
A háttér:
Kliens oldalon JS által generálódik a div tartalma, viszont a Google nem (mindig) tölti be a hozzá szükséges JS-t, így indexeléskor nem lát tartalmat.
Ezért most már szerver oldalon generálom le a tartalmi részt - viszont ez nem a legfrissebb, nem ugyanaz, mintha amikor a felhasználó betölti az oldalt, és a pár mp-es frissen (kliens oldalon) generált adatok ott vannak.Ezért betöltéskor szeretném azt elérni, hogy:
- ha a szükséges JS nem lett betöltve (Google indexel), akkor ott van a szerver oldalon generált tartalom, 1 óránként frissítve,
- viszont ha betöltött a JS (normál felhasználó), akkor a div tartalma eleve fel se legyen dolgozva, mert a JS úgyis kiüríti és friss tartalommal tölti fel. (Az a plusz pár kB-nyi HTML-rész pedig nem akkora vérveszteség.)Most is működik, viszont az első pár képet feleslegesen tölti be, mert azonnal kukázva lesz (a többi lazyload-os, szóval nem számít), illetve egy pillanatra látszódik is a tartalom, amit aztán a JS leszed, és ez nem tetszik.
Meg lehet oldani, hogy a szkript betöltésének sikerességétől függően dolgozza fel a div tartalmát / vagy skippelje?
Van B tervem is (és C is), dobom a div törlését, és a szerver oldalon generált tartalomra építek, csak sűrűbbre veszem a generálását, 5 percre, és ahhoz fűzöm hozzá a többi tartalmat. Csak ez sok módosítás, így ha megoldható az első változat, azt csinálnám.
Köszönöm.
-
sztanozs
veterán
Azt tudod csinálni, hogy alapból eltakarod / eltünteted a DIV-et és csak akkor jeleníted meg, ha a JS felülírta. Esetleg beleraksz egy 1x1-es IMG-t és az ALT szövegbe betöltöd azt, amit a DIV-be tennél és azt berántja a google.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
disy68
aktív tag
Nekem is hasonló megoldás jutott eszembe, mint sztanozsnak. Alapból elrejted a generált tartalmat, a betöltendő js-ben jön a függvény, ami betölti az új content-et, amit ellenőrzöl, hogy létezik-e, ha nem akkor megjeleníted a generált tartalmat, ha igen, akkor meghívod a betöltött js-ből az új content letöltést, ami a végén meg is jeleníti a betöltött tartalamat.
Ha a generált html-ben a képeket se akarod betölteni, amíg nem muszáj, akkor generáld úgy őket, hogy az src-t berakod data attribútumba amit akkor állítasz be, amikor nem töltött be js fájl.
“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
Taci
addikt
Köszönöm (sztanozs, neked is), a példakódot is (jó a fejcsere ) .
Viszont a tartalom elrejtését már az elején kizártam, mert a Google nem mindig egyértelműen áll hozzá (rendben van, látja, indexeli - vagy épp SEO-manipulálásnak tartja, és ejnyebejnye). És az egész átalakításom lényege pont az, hogy a G felé rendben legyen az oldal.Talán megpróbálom úgy, hogy üres lesz a div, és ha a (tartalomgeneráláshoz) szükséges JS-ek közül nem töltődött be bármelyik is, akkor behúzza oda az előre generált tartalmi részt. Máskülönben pedig üresen hagyja, és engedi, hogy a JS végezze a dolgát.
Nagy vonalakban:
https://jsfiddle.net/1dgyfs2v/
(disy68, a példakódodban van pár rész, amit így is fel tudok használni, köszönöm.)Bár jobban szeretném, ha nem csak utólag, szkripttel rakna bele tartalmat - hisz' az egész kálváriám abból indult eleve. Na de ezt már kisakkozom valahogy, most már elég lehetőségem van. Köszönöm a segítséget.
-
sztanozs
veterán
Talán megpróbálom úgy, hogy üres lesz a div, és ha a (tartalomgeneráláshoz) szükséges JS-ek közül nem töltődött be bármelyik is, akkor behúzza oda az előre generált tartalmi részt.
De ha a robot épp nem futtat JS-t, akkor ezt hogy oldod meg?JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Taci
addikt
válasz sztanozs #9225 üzenetére
Igen, teljesen igazad van. Azóta már rájöttem, hogy ugyanaz lenne a probléma, és hogy pont ugyanúgy kliens oldalon generálódna a tartalom, ahogy most - szóval csak mentem volna egy nagy kört a semmiért.
Úgyhogy marad a B terv, a generált tartalomhoz való hozzáfűzés. Így ez teljesen szerver oldali generálás lesz, JS csak akkor fog futni, ha a felhasználó a görgetésben az utolsó elemek közelébe ér (infinite scroll). Így a JS állomány nagy részét (amik eddig a tartalomgenerálásért voltak felelősek) elég ha a csak FCP (First Contentful Paint) után húzom be (async? Ennek még utána kell néznem amúgy is: [link]), de ez még arrébb van kicsit.Köszönöm.
-
Taci
addikt
Sajnos nem jó a B terv, nagyon sok a probléma vele. Így mennék még egy kört:
Adott egy tartalommal feltöltött div:
<div id="content">Tartalom</div>
Meg lehet szakítani / kihagyni az adott div renderelését?
<div id="content">
<script>if (jsBetoltve == 0){ //content div betöltésének átugrása }</script>
Tartalom</div>
És az elrejtés (display:none, z-index stb.) sajnos nem ajánlott a SEO szempontjából, sok cikket átolvastam a témában.
Ott kell hogy legyen a tartalom a szerveren, az sem nagy baj, hogy azt a plusz pár kB-ot le kell tölteni, viszont eléggé zavaró, ahogy látszódik egy pillanatra, mielőtt a JS lenullázná a div-et. (Hiszen rendereli, ha már benne van.)
Köszönöm.
[ Szerkesztve ]
-
Bzozoo
tag
Az mért nem járható út, hogy realtime generálod a tartalmat és azt realtime rendereled, akkor amikor az user megnyitja? Ekkor a felhasználó a legfrissebb generált információt kapná HTML-ben és a Google is ugyanazt a renderelt infót kapná.
Szerintem ez a JS-es div felülírás sem túlságosan SEO kompatibilis. -
Taci
addikt
Most pontosan így működik, és a Google semmit sem lát a JS által kliens oldalon generált tartalomból. (A search console-ban látom, hogy néha betölti a szükséges JS-t, olyankor van indexelt tartalom is, de aztán "vált", és mondjuk másnaptól már kihagyja a fájlt, így csak egy üres statikus váz van.)
Vannak saját cikkeik is, hogy az indexelő botok már látják a JS által generált tartalmat is, hogy a dinamikusan épülő weblapokat is indexelni tudják - sajnos azonban ez nem tökéletes / vagy nálam van valami baja (amit amúgy látok is - úgy gondolja, hogy az az 1 szál JS fájl neki nem kell és kész, és így bukta az egész oldalépítés).
Ezért akartam szerver oldali összerakásra váltani, viszont mivel az oldal ettől még görgetés után dinamikusan épül fel (infinite scroll), eléggé zsákutcába kerültem. Már a projekt kukázásán és újrakezdésén gondolkodom.[ Szerkesztve ]
-
Taci
addikt
válasz martonx #9230 üzenetére
Igen, ezért csináltam úgy (kényszer-öszvérmegoldásként), hogy a HTML tartalommal feltöltve és frissen tartva van szerver oldalon, így a Google is látja és indexeli - aztán a kliensen betölt, és a JS lecseréli a legfrissebbre.
Na de ez se nem szép, se nem hatékony. Rossz irány volt.
Úgyhogy ezt el is engedem, és hagyom a dinamikus tartalomgenerálást. Lesznek szerver oldalon pár percenként PHP-val frissített, statikus, tartalommal szépen feltöltött oldalak, a Google-nek lesz mit indexelnie. Nem lesz olyan szép és kreatív mint most (amit amúgy nagyon szeretek), ellenben nem csak a családom és én fogom ismerni és látni... Remélhetőleg.Így igazából használom azt a szerver oldalon generálós módszert, amit a mostani megoldáshoz csináltam (PHP):
1) HTML template jól elkülöníthető kulcsszó-sztringekkel (pl. ahova az első cikkhez tartozó kép linkje megy, az websiteData_imageSource_1, ahova az adott title, az mondjuk websiteData_Title_1 stb.)
2) PHP, lekéri a friss adatokat SQL-ből, aztán az eredményeket egy egyszerű sztringcserével a kulcsszó-sztringek helyére pakolja, majd elmenti (a megfelelő mappába index.html-ként).Oké, nagyon alap-alap-alap megoldás, de működik. Vagy tanuljak valami normális keretrendszert inkább? Semmit nem ismerek, sose használtam, csak pár nevet láttam még: React, Vue.js, Next.js, ilyesmik.
Szívesen tanulok, ha azt mondjátok, hasznos lehet, és hogy a mostani faék-egyszerűségű módszerem nem jó. Ehhez szívesen vennék egy ajánlást, mit tanuljak meg. (Bár azt se tudom, a jelenlegi cPaneles szolgáltatónál telepíthetek-e egyáltalán bármit, ami ezekhez lenne szükséges.)A cél: híraggregátor oldal. A jelenlegi formájában olyan, mint a Fb, görgetsz, töltődik. Szeretem, tetszik, de sajnos rossz ötlet volt. Nem Google-barát, ebből nem lesz haszon őszire. Inkább váltok valami 1.000.001. standard híroldal-kinézetre. Ehhez mondjuk szerintem nem kell semmi extra, elég a PHP --> SQL --> PHP --> HTML irány, de hátha ti mást mondotok.
Köszönöm.
-
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Én kérek elnézést!
-
Bzozoo
tag
De én nem erről beszéltem. Nem arról beszéltem, ahogy nálad van. Arról, hogy nem kell előre generált HTML-eket gyártani. A HTML-t akkor kell előállítaani, amikor a felhasználó lekéri a tartalmat. A felhasználó már csak a generált HTML-t kapja, ami akkor generáloódik szerver oldalon, amikor a felhasználó megnyitja az oldalt.
Node.js, Next.js, Nuxt.js mind tudja ezeket. -
martonx
veterán
Nyilván direkt gyártja le előre a Html-t, fogd ezt fel egyfajta naívan kivitelezett, bénácska cache-elésnek. Én sem értem mi szükség van erre, gondolom valami garázs hosting cég kenyér pirítóján fut az egyébként sem optimális kód, és enélkül rohadt lassú lenne.
Én kérek elnézést!
-
Sziasztok!
Céges munkáink során gyakran van dolgunk A4-es formanyomtatványokkal, melyeket tömegesen kell gyártani, kevés adat módosításával. Az ilyen esetekre szoktam gyártani HTML + CSS + JS alapon működő, kliens oldali böngészőből futó célraorientált appokat, ahol kollégáim pár input mező kitöltésével azonnal megkapják az A4-es nyomatot.
Ezt a legegyszerűbben mm-ben meghatározott CSS, adatbeillesztésre használt JS és HTML <table> keret alkalmazásával csinálom, ahol a CSS-ben van egy külön nyomtatónézet, a JS pedig még a CTRL+P-t (window.print();
) is megnyomja helyettükMost azonban különlegesebb volna a feladat, ugyanis a lementendő PDF tartalmaz olyanokat, melyeket lövésem sincsen, hogyan tegyek bele. Itt egy kép:
A sárgával kijelölt zóna a dokumentum címe, ami nem egyezik meg a dokumentum elmentési nevével (nem dokumentum.pdf, hanem pl kiskacsa).
A zöldel kijelölt zónák pedig könyvjelzők (kattintásra oda is ugrik a dokumentum megfelelő részéhez).Kérdésem az lenne, hogy azon módszer alkalmazásával, amivel eddig dolgoztam (itt leírtak) megolható-e ez, vagy ha nem, megoldható-e mással?
Előre is köszönöm a válaszokat!
Ui.: Miért ebbe a topikba teszem fel a kérdést? Mert azt gyanítom, a megoldásnak köze lesz a JS-hez.
But who is watching the guardians?
-
disy68
aktív tag
A pdf-et ebben az esetben nem a js csinálja, hanem valami nyomtatóként beépülő pdf generáló program (böngészőjé, microsoft-os, acrobat, akármi), ami a kapott oldalból csinál neked pdf-et. Ezeknek nem igazán szokott lenni sok beállításuk a méreten kívül. Lehet, hogy van olyan, ami esetleg generál valami alapján könyvjelzőt a végső pdf-be meg a dokumentum nevét is esetleg belerakja, de nem fogadnék rá.
Ehhez sanszosan szükség lesz valami explicit pdf készítő lib-re, akár javascript, akár backend oldalon. Egy gyors keresés, első találat (jsPdf), ránézésre tud sokmindent.
“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
Taci
addikt
Sziasztok!
Tudjátok esetleg, hogy a
navigator.share
használatával hogyan lehet a szövegtörzsbe (text paraméter) kattintható linket elhelyezni?Mobilon megosztva persze szépen megy (mert az ha linket lát, alakít), viszont Windows alatt ha a Posta alkalmazással osztom meg, akkor csak az url paraméterhez helyezett link "él", máshol nem.
Ez az alap:
https://codepen.io/j471n/pen/gOxgxedDe ha egy url-t írok be a text-hez, akkor nem lesz aktív (kattintható). Pl.:
19. sor:webShareAPI("header", "www.google.com", "www.url.com")
Csak ami az url paraméterhez kerül.Próbáltam HTML kóddal is, hátha az kell az Outlook-nak, Gmail-nek, Postának, de nem segített:
shareHTMLBody = "<html><body>";
shareHTMLBody = shareHTMLBody + '<a href="www.google.com">Google</a>';
shareHTMLBody = shareHTMLBody + "</body></html>";
Lehetséges egyáltalán?
Köszönöm. -
Sziasztok!
Lehet, furcsa a kérdésem, de fontos. Adott egy site, amiben van egy
iframe
. Aziframe
behív egy másik oldalt.
Kérdés az, hogy a két oldal egymással tud-e kommunikálni?Konkrétan az lenne a cél, hogy a behívott oldal információt közöljön az őt behívó oldallal, akár csak úgy, hogy van benne egy azonosítóval ellátott DIV, amit a behívó le tud esetleg kérdezni. Ez megoldható?
Előre is köszönöm a válaszokat!
But who is watching the guardians?
-
-
Sziasztok!
Sajnos nem találok megoldást a neten pure JS alkalmazásával a következő feladatra:
Adott egy DIV, melynek nincs ID-je, de van Class-a.
Ha le akarom kérdezni, hogy hány pixeles a mérete az adott DIV-nek, csak ID-re találok megoldásokat, Class-ra nem. Viszont nekem most az kellene.Megoldható egyáltalán?
Előre is köszönöm a válaszokat!
But who is watching the guardians?
-
válasz martonx #9246 üzenetére
Nos azért, mert valaki nem ismeri a JS 100%-át, még nem ledegradálandó! Hidd el, elég régóta foglalkozom vele és kimondottan sok programot írtam már meg különböző feladatokra tiszta JS használatával, így attól, hogy nem vagyok profi, még nem leszek kezdő sem!
Ha egy programnyelvnek vannak olyan részei, amit az ember sosem használt korábban, miért kéne hülyének nézni csak azért mert most arra lenne szüksége és nem tudja???Nem azért tettem fel a kérdést, mert hülye lennék. Sőt! Amit te írtál (pontosabban gondolom amit írni akartál, mert még ezt sem sikerült helyesen) próbáltam, de nem adja vissza az értéket! Ezért gyanakodtam arra, hogy esetleg nem jó a megoldásom!
edari: Köszönöm.
[ Szerkesztve ]
But who is watching the guardians?
-
-
martonx
veterán
Nézd, a misztikus módszer, amit javasoltam, hogy id helyett class-al hogy tudsz js-el hivatkozni egy div-re, működik: JSFiddle - Code Playground
Tudom hihetetlen, hogy ilyen félelmetesen bonyolult fekete mágiák vannak js-ben. Sebaj, fel a fejjel, jó tanulást!A példa kódot igyekeztem minél egyszerűbben, olvasmányosan megírni, hogy még azok is megértsék, akik profik, de eddig csak a js speciálisan miniatűr szeletét használták. Remélem nem lett átláthatatlanul bonyolult.
[ Szerkesztve ]
Én kérek elnézést!
Új hozzászólás Aktív témák
- 2025.11.04. Garancia! MSI RTX 3080 12GB GDDR6X TRIO PLUS Videokártya! BeszámítOK
- ThinkPad T14s Gen2 14" FHD IPS i7-1165G7 16GB 512GB NVMe magyarított vbill ujjlolv IR kam gar
- -250.000 Ft Bontatlan 2024 kiadás 18 Predator feltöltés alatt
- Eladó gyári Komono 16.5mm óra szíj
- EVGA RTX 3070 8GB GDDR6 FTW3 ULTRA GAMING Eladó! 125.000.-
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen