-
GAMEPOD.hu
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
-
K1nG HuNp
őstag
most vagy 3 honap kihagyas utan volt alkalmam leulni az egyik kis hazi projektemhez es feltunt egy dolog instant amin eddig sosem gondolkodtam / nincs ra megoldasom hirtelen.
adott egy kereses page ami egy adott apiban keres, talalat eseten betolti az adott cumokat. van egy szep skeleton animaciom mert ugye elore tudom milyen kontenerekben lesz a szoveg meg a kep stb. a problemam az, hogy pl egy keresesi talalatban van 5 sor szoveg meg 1 kep, ekkor mivel az adat valojaban mar megjott az apitol a toltes state offolodik, megjelenik a content, viszont a contentben a kep mint egy <img src"..."> szerepel, ami most elkezd tolteni.
mit kellene csinalnom, hogy az eredeti toltes magaba foglalja az adott kepek bevarasat is?
szerk:
ja amugy igen, Vue.js, a state alapjan jelenik meg vagy a tolto komponens vagy a rendes. apitol amikor a fetch lekeri az adatot akkor sima isLoading = false, a szoveg szepen meg is jelenik, a kepek viszont most hogy lassu volt a netem, meg vartak vagy 2 mp-t es emiatt ugye full feherseg volt a helyukon.[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
K1nG HuNp
őstag
na kozben osszehekkeltem, mukodik ahogy szeretnem csak az a baj, hogy most nem tudom a vue keretein belul tartani. eddig v-if, v-else modon volt a komponensek megjelenitese, viszont most orokre a tolto komponenst mutatna, mert a kepek addig nem loadolnak mig nem visiblek megoldaskent a loader v-ifelve maradt, a rendes komponens viszont styleban kapott egy hiddent amig be nem toltott az osszes kep, amire amugy van nativ html event mint kiderult
[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
-
martonx
veterán
válasz K1nG HuNp #7452 üzenetére
Képek töltésének figyelése helyett azt szokták csinálni, hogy minden képhez beállítasz egy placeholder-t, és amíg nem érkezik meg a kép, addig az jelenik meg. Persze ez is csak kerülő megoldás. Lazy load-olt képeknél ez elég általános.
Másik bonyolultabb ötletem, hogy minden egyes képre csinálsz egy komponenst, azon belül figyelve az adott kép onload eventjét. Amikor a kép betöltött, akkor a kép komponens státuszát loadingról loadedre váltod. Kívül pedig azt figyeled, hogy minden kép komponensed loaded lett-e (bár persze, mi van, ha egy kép valóban hiányzik), és a szülő státusza csak akkor lesz loaded, ha a képek is loaded-ok.
De szerintem ez egy rakás bohóckodás csak azért, hogy mindenáron vuejs-en belül tarts mindent, miközben az egyszerű megoldásom vuejs nélkül css-ből megoldja az adott problémát és még a UX is rendben lesz, mert hamarabb megjelennek a találatok, a képek meg majd ahogy jönnek lecserélgetik a placeholdereket (ha meg 404-el jön egy-egy kép, akkor marad a placeholder).Én kérek elnézést!
-
Aureal
senior tag
Üdv!
Meglehet olyat oldani, hogy egy weboldalt nem akarom, hogy minden sallangjával képekkel stb. betöltsön a böngi, hanem csak arra lennék kíváncsi hogy a html forráskódot kapjam meg, ill. abban kereshessek id-t class-t változót stb?
-
Aureal
senior tag
válasz instantwater #7457 üzenetére
Javascripttel természetesen, akár egy iframebe vagy tömbbe, nem tudom. Csak próbálkozgatok a w3schoolon dolgokkal és láttam hogy js-el lehet a html sourceben is dolgozni, lekérdezni stb.
Pl. ilyesmi egyszerű dolgokra kell gondolni, hogy egy oldal, mondjuk bing.com háttérkép url-jét akarom megszerezni, de nem akarom hogy a böngi betöltse vizuálisan az oldalt, csak a forrását szövegesen, meg ilyesmi... ha így érthetőbb. -
K1nG HuNp
őstag
válasz martonx #7455 üzenetére
adott volt eddig is 2 komponens, egy placeholder amiben van placeholder kep, szoveg stb, meg a sima eredeti komponens. problema az volt hogy addig volt a placeholder mutatva amig megjott apibol az adat. ezek utan egybol atvaltott rendes komponensre, de ugye itt meg a linkelt kepek nem toltottek be.
na mindegy kicsit hacky lett mert eddig szepen lefele folyt a data, a state is egyertlemu helyen volt, most viszont a child (eddig buta) komponensnek is felfele kell szolnia, hogy minden kep kesz es csak ezutan allitja a parent is a loadingot falsera.
csak ugye egy kep addig nem tolt amig nem visible, ergo v-ifelve sosem lesz jo, css visibility: hidden kellett neki.
vegeredmeny am: https://booktrckr.firebaseapp.com/search
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
martonx
veterán
Az az igazság, hogy annyira suta volt a kérdés, hogy a válasz is az lett. Megoldható? Igen. Egyébként pár sor kóddal megoldható (tippre, akár egy sorral is, pl. powershellel ennyi:
Invoke-WebRequest -Uri "http://prohardver.hu"
). Aztán, hogy milyen nyelven, milyen formában, hogy fogod megoldani, honnan tudjam mihez értesz? NodeJs, PHP, C# bármilyen nyelv megfelel erre. Aztán ha megvan a letöltött html stringként, akkor már csak parseolni kell valamivel.Én kérek elnézést!
-
Aureal
senior tag
válasz instantwater #7464 üzenetére
igen
-
Aureal
senior tag
válasz martonx #7463 üzenetére
" egy weboldalt nem akarom, hogy minden sallangjával képekkel stb. betöltsön a böngi, hanem csak arra lennék kíváncsi hogy a html forráskódot kapjam meg"
"akár egy iframebe vagy tömbbe, nem tudom. Csak próbálkozgatok a w3schoolon dolgokkal és láttam hogy js-el lehet a html sourceben is dolgozni, lekérdezni stb."
Ebben mi nem egyértelmű? Ki akart itt C#-ot emlegetni pl, pláne powershellt amit azt se tudom mi?
[ Szerkesztve ]
-
.45
csendes tag
-
instantwater
addikt
Ha válaszolsz a legeslegelső kérdésemre, akkor többet tudunk segíteni.
Tehát van egy saját weboldalad amin meg akarsz jeleníteni olyan adatot ami egy másik weboldalon elérhető, de nem akarod letölteni a másik oldal kapcsolódó fájljait, csak a HTMLt.
Értem én, csak a CORS és más finomságok miatt ez nem mindig járható út tisztán böngészőből, de próbáld ki, hogy mit enged a forrás szervere.
-
Aureal
senior tag
"Ha csak a HTML kódot akarod, akkor nyomj egy tetszoleges oldalon egy jobbklikket és View Page Source vagy Inspect "
Hát ez JS ismeret nélkül is nyilván egyértelmű, de mint említettem, nem akarom hogy a böngi ehhez betöltse előbb az oldalt.
"Ha válaszolsz a legeslegelső kérdésemre, akkor többet tudunk segíteni."
Írtam, hogy a w3schoolon próbálgatok példákat + saját ötleteket nyilván, de nem vagyok webmester és programozó, nem értek a webtechnológiákhoz, egyszerűen csak érdeklődöm a témában és szeretnék bizonyos dolgokat megoldani elképzelés szerint...
Az alap gond tehát itt keresendő, nem tudom mivel mit és hogyan lehet, mik a határok és korlátok. Ezért jövök egy fórumra érdeklődni és nem íratkozok be 100 ezrekért egy suliba, mert az nem éri meg és olyan mélységig nem is érdekelne + nem ezzel akarok foglalkozni és pénzt keresni. Viszont mindig azt kapja az ember általában, hogy miért nem érdeklődik, kérdez és jár utána, hisz sokan hasonlóan már eljutottak komoly webtervezői státuszba is. Nekem elég csak pár egyszerű dolog, nem török a magaslatokba. Ennyi. Ha tetszik ilyen egy a témában félművelt érdeklődő. -
instantwater
addikt
Semmi gond azzal, ha itt kérdezel, hiszen ez a JavaScript topik, jó helyen vagy.
Én is így kezdtem, sok évvel ezelőtt, lenyírtam agyilag jópár fórumtársat egy másik fórumon mire megértették, hogy mit is akarok, hiszen én magam sem tudtam igazán.
W3school az "elmegy" kategória.
Ha elakadtál egy kóddal, nyugodtan illeszd be, vagy, ha hosszú akkor linkeld pastebinről vagy gist.github.com ról.
Ha elméleti kérdésed van, akkor kérlek írd le pontosan, hogy mit szeretnél csinálni, hol, hogyan, meddig jutottál, mi a végcél, hátha van egyszerűbb megoldás is, mint amerre elindultál.
Ha van egy meglévő oldalad akkor a fetch API minden modern böngészőben benne van, azzal tudsz lekéréseket indítani, nem kell külön betölteni semmilyen kliens könyvtárat.
Javaslom a böngésződben a fejlesztői konzol használatát, ott egyből ki is tudod próbálni a kódokat, vagy codesandbox, codepen és hasonló online oldalakat is használhatsz, itt el tudod menteni a kódodat, és tudod linkelni ide, ha segítséget kérsz.
Tehát akkor most kérlek írd le, hogy honnan próbálsz lekéréseket indítani, nézz utána a fetch apinak, és azt is írd le, hogy milyen oldalt próbálsz lekérni.
Googleban támpont lehet mondjuk egy "ajax fetch" keresés.
Értjük, hogy le akarsz kérni HTML tartalmat egy másik oldalról, de nem tudjuk milyen környezetben próbálkozol, meddig jutottál, mit tudsz, mit nem tudsz, mit próbáltál, mit nem, mi az amit le akarsz kérni...
Ha nem ragaszkodsz mindenáron a böngészős környezethez, akkor Node.jsben sokkal nagyobb szabadsággal dolgozhatsz. Bármit, bármikor, bárhonnan lekérhetsz, feldolgozhatsz, nincsenek böngészős szigorítások, CORS és társai.
Azért is jó lenne tudni, hogy mit és honnan akarsz lekérni, mert lehet, hogy van egy JSON REST APIjuk, és nem kell a HTML parsolással bohóckodnod.
-
Aureal
senior tag
A webtechnológiákhoz nem értek. A szakkifejezésekhez mint a node.js, fetch api és társai utána kell néznem mi az és mire jó.
De egy egyszerű példának itt ez az oldal [link] és erről egy iframebe beágyazva pl. meg akarom oldani, hogy csak a valuta árfolyamok blokkot jelenítse meg a tesztoldalam.
Ehhez pl. el kéne érnem az oldal forrásában az exchange_widget_4941 id-jű div-et és alosztályait feldolgozásra. Vmi ilyesmi...[ Szerkesztve ]
-
K1nG HuNp
őstag
https://twitter.com/reactjs/status/1187411505001746432?s=20
Megjelent experimentem a React Suspense.. Nagyon durva innovaciot tolnak az fbnel
Roviden tomoren: nincs tobb "isLoading", kevesebb boilerplatevel lehet sokkal szebben kifejezni uiban a toltest, fallbackekkel esetleg error handling komponensekkel. Pont ezzel tokoltem par kommentel feljebb vueban..
[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
hiperFizikus
aktív tag
Jó kedvem van; épen egy másik JS programocskát írok, 45 oldal program 40 sor/oldal és 60 oldal tartalom{adat}, de közel sincs befejezve . A program elégé bonyolultra sikeredett, de a tartalom aránylag egyszerű .
Az a problémám vele, hogy egy csomó hivatkozást generál fordítás közben, ami rengeteg nem túl mélyen ágyazott cikluson fut keresztül, és emiat a tartalmat nem tudom növelni ennek a kb. 100 szorosára, mert elviselhetetlenül lassú lenne a laptoopomon .
Mit tehetnék ?
Ti ilyenkor mit szoktatok tenni ?
A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
Rickeffe
aktív tag
-
instantwater
addikt
válasz hiperFizikus #7476 üzenetére
Kezdd apróbb részekre és több fájlra darabolással, így könnyebben megtalálod a kérdéses részt.
Ha konkrét kérdésed van, töltsd fel a kódot github gistre, pastebinre vagy codesandbox és társaira és küldd a linket.
-
K1nG HuNp
őstag
Flowot hasznalt mar valaki? Van ertelme vagy mindenki TS-el kezd mar alapbol?
Kicsit baratinak tunik, mert ugye mar letezo kodbazishoz is hozzacsaphato, meg jol integralodig a facebook cuccaihoz, react frontend, jest tesztek stb.
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
hiperFizikus
aktív tag
válasz Rickeffe #7477 üzenetére
Igen, "buliból" csinálom a JS script-emet . De ha készen lesz, szeretném hasznosítani, mert azért nem vagyok bolond, hogy ne legyek ilyen durva magamhoz, nem vagyok már anyira naív mint régebben .
Az előző 150 oldalas script-hez támogatókat keresek, de eddig senki se méltatott válasz e_mail-ra . Az a rossz benne, hogy a várakozásal töltött idő, pénzkidobás az ablakon .
A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
instantwater
addikt
Rossz az irány.
Ha iframebe teszed be, akkor nem tudod kontrollálni mi töltődjön be. Be fog töltődni az egész oldal.Ezért javasoltam a Fetch APIt, vagy Axiost, és JQueryt parsoláshoz, de így is elég lassú lesz, és feleslegesen fog letölteni a böngésző több kilobájtnyi HTMLt.
Javasolnám, hogy keress valami exchange rate APIt, ahonnan a árfolyamot gyorsan és egyszerűen meg tudod kapni.
Amit te akarsz az már a web scraping témakör ami nehézkes, macerás, és nem hatékony.
-
instantwater
addikt
válasz hiperFizikus #7480 üzenetére
#7478 at még mindig javaslom.
"Pénzkidobás"?
Ha van pénz a projektben miért nem működik?
Vegyél fel programozókat, hirdess, marketig, projekt management...Amúgy bármilyen jó ötlet, egy "150 oldalas" kód nem karbantartható, és egy nagy büdös delete gombot érdemel.
Egy fájl ne legyen több 150 sornál.
És egy függvény sem mondjuk 20 sornál.
Darabold fel, úgy karbantarthatóbb. -
hiperFizikus
aktív tag
válasz instantwater #7483 üzenetére
Ami igaz az igaz, még nekem is nehéz az első kódjában eligazodni .
A tapasztalatom szerint a hirdetés meg olyan, hogy ha nem kapkodnak utána, akkor jelentős a hirdetési költség is . Ha meg másokkal összeállsz, akkor nekik is fizetni kell, de előre kérik .[ Szerkesztve ]
A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
instantwater
addikt
válasz instantwater #7481 üzenetére
Aureal
Igazából jqueryvel is lekérheted a tartalmat, nem is kell Axios.
-
Tomi_78
tag
Sziasztok!
Azt szeretném megcsinálni egy honlappal, hogy bizonyos dolgokat lehessen a Tetszik/Nem tetszik gombokkal értékelni. Ezek képek lennének, amikre kattintva a tetszik vagy a nemtetszik változók értéke növelődik.
Ezt JS-ben nem nehéz beállítani, de valahogy tárolni is kéne ezen adatokat, hogy ne vesszenek el, és a következő látogatáskor is láthatók legyenek a legutóbbi állapotok.
Ehhez egy .txt állományba menteném le a változók értékeit, tehát csupán két számot.
Ezt viszont úgy tűnik, a sima JS nem tudja megoldani, kell tehát némi PHP-s kiegészítés is hozzá.
igen ám, de akkor meg tudnom kellene, hogy a változókat hogyan lehet ide-oda "dobálni" JS és PHP között. Na, ez az, ami sajnos nem megy.
Írtam, pontosabban összeollóztam egy kis példaprogramot a világhálóról kipuskázott példák alapján, de ez sem működik.
Íme a kód:<html>
<head>
<title>Fájlkezelő</title>
</head>
<body>
<?php
$File = 'adat.txt'; // A számláló file neve
if (file_exists($File)) // Létezik a file?
{
$fp = fopen($File,"r"); // Megnyitjuk olvasásra
$num = fread($fp, filesize($File)); // Beolvassuk a tartalmát a $num változóba.
fclose($fp); // Zárjuk a filet.
$num=$num+1; // A változó értékét megnöveljük
$fp = fopen($File,"w"); // Megnyitjuk ugyanazt a filet, de most írásra
fwrite($fp, $num, 10); // Kiírjuk a változó értékét.
fclose($fp); // Zárjuk a fájlt
}
?>
<script type="text/javascript">
var valami = <?php echo $num ?>; //Ha elhagyom az idézőjeleket, UNEXPECTED TOKEN hiba lesz a konzolban, ha nem, akkor meg kiír mindent közte!!!
//alert(valami);
</script>
</body>
</html>
-
instantwater
addikt
válasz Tomi_78 #7486 üzenetére
Mit jelent az, hogy nem működik?
Nem ír fájlba, nem számol, hibát ad, nem írja ki a JS amit szeretnél?Ha csak a kliensnek a saját számlálóját kell kezelni akkor JSsel cookieba vagy local storagebe el tudod menteni.
Ha kell a szerveren is az adat akkor marad amit csináltál, bár célszerű lenne MySQLbe tenni az adatot, illetve ez nem a PHP topik.
-
Tomi_78
tag
válasz instantwater #7487 üzenetére
"nem írja ki a JS amit szeretnél?"
Pontosan ez a helyzet. Odaírtam a kódba megjegyzésként a kiírás mellé.
Ugyanis vagy magát a kódsort írja ki, ha idézőjelek között van, vagy semmit, mert hibaüzenetet ad a konzol a Google Chrome-ban. -
instantwater
addikt
válasz Tomi_78 #7488 üzenetére
Értem.
Azért nem írja ki, mert a $num változót az if szkópján belül deklarálod.
Tegyél egy $num=0 értékadást az if elé, így elérhető lesz az ifen kívülről is.De ha rám hallgatsz, becsomagolod az egészet egy szamlal() függvénybe, ami elvégzi a kívánt műveletet, majd a végén visszaadja a $num értékét.
Ezután csak meg kell hívnod a.függvényed ahol számlálni akarsz, esetedben a javascript tagon belül, és így nem kell aggódnod a változó szkópok miatt, és a globális névteret sem szennyezed be.
Tényleg el kellene döntened, hogy user szintű vagy globális számlálót akarsz, mert a jelenlegi megvalósítás az egy globális számlálót valósít meg, és az összes usered ugyanazt a számlálót fogja növelni.
Persze, ha ez egy látogató számláló akkor ez a kívánt viselkedés.
Miért van szükséged javascriptre?
Ezt az értéket simán kiírhatnád a bodyba is PHPvel.Bocsi a hiányzó formázásért, telefonról vagyok.
-
instantwater
addikt
Fog működni, lehet mixelni.
A PHP parser csak a php tagok közti részt futtatja, a többit plain textként kezeli.Vannak esetek amikor szerver oldalról kell értékeket átadnod a kliensnek még mielőtt a JS elkezdene futni, hogy ezzel inicializálj bizonyos állapotokat.
Tehát ha ő alertelni akarja a szerveroldali számlálóját akkor ez a megoldás.
Persze szebb lenne egy APIt hívni vagy legalább templating enginet használni a HTML generáláshoz.
Viszont, ha csak egy globális számláló kiiratása a cél, akkor elég lenne kiechozni a bodyba, vagy templatevel kiírni a megfelelő helyre, nem kell API hívás, mert az csak lassítja a betöltődést.
[ Szerkesztve ]
-
Rickeffe
aktív tag
-
martonx
veterán
Na végre valami konkrétum, hogy mit is szeretnél, mert a szeretnék valamitet, értem én, hogy valamit szeretnél, de mégis mit válaszoljak rá.
Ez így viszont már némi konkrétum, amiben meg lehet kapaszkodni.Ezt csak hackelve, és csúnyán tudod megoldani, pl. behúzod az iframe-et az oldaladra, hideolod / 1px méretűre zsugorítod, utána már javascripttel ki tudod szedni belőle amit akarsz.
Ha az oldaladon valuta érték megjelenítés a cél, akkor ehhez vannak direkt ingyenes API-k pl. MNB-nek, amiket szintén le tudsz javascripttel kérdezni. Én az iframe-es hackelős megoldás helyett, ezt az utat javaslom.
Én kérek elnézést!
-
Tomi_78
tag
válasz instantwater #7490 üzenetére
Sajnos nem működik még, pedig adtam az if előtt kezdőértéket a $num-nak, meg függvényt is létrehoztam. Most a JS függvényen belüli PHP-zés nem tetszik valamiért a programnak. Így néz ki most a kódom:
<html>
<head>
<title>Fájlkezelő</title>
</head>
<body>
<script type="text/javascript">
function szamlal() {
<?php
$File = 'adat.txt'; // A számláló file neve
$num=0;
if (file_exists($File)) // Létezik a file?
{
$fp = fopen($File,"r"); // Megnyitjuk olvasásra
$num = fread($fp, filesize($File)); // Beolvassuk a tartalmát a $num változóba.
fclose($fp); // Zárjuk a filet.
$num=$num+1; // A változó értékét megnöveljük
$fp = fopen($File,"w"); // Megnyitjuk ugyanazt a filet, de most írásra
fwrite($fp, $num, 10); // Kiírjuk a változó értékét.
fclose($fp); // Zárjuk a fájlt
return $num;
}
?>
};
//<script type="text/javascript">
valami = szamlal();//'<?php echo $num ?>'; //Ha elhagyom az idézőjeleket, UNEXPECTED TOKEN hiba lesz a konzolban, ha nem, akkor meg kiír mindent közte!!!
alert(valami);
</script>
</body>
</html> -
gary89
csendes tag
válasz Tomi_78 #7496 üzenetére
- a szamlal function üres, nem csinál semmit sem, így undefined lesz JS oldalon a valami.
- az extra // bezavarhat html parseoláskor (bár a modern böngészők tudnak vele együtt élni)
- a return $num; okozhatja a furcsa viselkedést, ott egy ilyen kellene, hogy helyes legyen:echo 'return '. $num . ';' ;
így a szamol helyes értékkel térne vissza és később nem kellene az echo $num -
hiperFizikus
aktív tag
válasz hiperFizikus #7476 üzenetére
Megoldódott a lassúság . Gyorsítót tettem bele, ami "IF Else" -ékből áll, nem bonyolult, de összetett kódrészlet . Most legalább nem kell funktorokkal kínlódnom miata egy jóideig . Egyikőtöknek se jutott eszébe javasolni nekem, pedig profik vagytok . Nem baj, mert akkor én legelább ügyes vagyok .
A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
Rickeffe
aktív tag
Új hozzászólás Aktív témák
- Az iPadOS-re írt appokra is díjat vet ki az Apple
- Amlogic S905, S912 processzoros készülékek
- Path of Exile (ARPG)
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Építő/felújító topik
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Mindent megtudtunk az új Nokia 3210-ről
- sziku69: Fűzzük össze a szavakat :)
- Sony MILC fényképezőgépcsalád
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest