- Honor 200 Pro - mobilportré
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- T Phone 2 Pro - majdnem mindenben jobb
- Redmi Watch 5 - formás, de egyszerű
- 8000-es akksi került az IQOO Z10 Turbo+-ba
- Xiaomi 12 - az izmos 12
- Egy óra, két rendszer
- Milyen okostelefont vegyek?
- Samsung Galaxy Watch7 - kötelező kör
- Melyik napszakban merül majd le az iPhone 17 Air?
Hirdetés
-
Mobilarena
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
-
Sk8erPeter
nagyúr
Jobb lett volna, ha felrakod pastebinre, ahogy Karma kérte, úgyhogy megtettem helyetted:
http://pastebin.com/tETmVhy8Nekem most így minta nélkül nincs időm, meg kedvem igazán foglalkozni vele, azért kicsit könnyebb lenne egy jsFiddle-linkkel, azonbelül egy mintatáblázattal, hogy mi is nem működik. Mert így meg gondolkozni is kell, hogy mit is akarhatsz, és az így reggel nem jó.
No de hátha szán rá valaki időt. -
Sk8erPeter
nagyúr
A query string mező-érték párosait kb. így tudod kinyerni:
http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript/21152762#21152762
(a threadben több ötlet is van)Mondjuk ez függvénybe rakva:
function getQueryStringValues() {
if (window.location.search === "") {
return null;
}
var queryDict = {};
window.location.search.substr(1).split("&").forEach(function(item) {
queryDict[item.split("=")[0]] = item.split("=")[1];
});
return queryDict;
}"Lényegében ki kellene nyerni az URL-ből az ?id= után álló számot és azzal generálni az új URL-t, valahogy így:
self.location='modify.php' + '?id=' + ID + '?cat=' + val;"
Ez pedig hibás, mivel a query string előtt egyszer kellene csak szerepelnie a kérdőjelnek, többször nem szabadna előfordulnia, a különböző kulcs-érték párokat &-jellel lehet elválasztani egymástól. -
Sk8erPeter
nagyúr
válasz
[pod]Diablo #4181 üzenetére
Ja, tényleg, még múltkor ezt akartam neked belinkelni:
http://www.smoothdivscroll.com/clickableLogoParade.htmlItt pont azt csinálja, ami neked kell, több reklámlogó egymás mellett folyamatosan oldalra scrolloz, és a logók kattinthatók, a slideshow egér fölévitelekor szünetel.
(GitHubon is elérhető a projekt.)=============================================
Még érdekességnek:
http://stackoverflow.com/questions/15662426/automatic-image-scroll-smooth-with-jquery/15662955#15662955
Itt az alsó példa az érdekes:
http://jsbin.com/olikom/11/edit
Mondjuk picit macerás megoldás, mert egybe vannak rakva a támogatók egyetlen képbe, ez háttérképként van berakva, és azt csúsztatgatja; a klikkelhetőséghez pedig pixelre pontosan kell meghatározni, hogy mettől meddig tart egy-egy partner képe. Ettől függetlenül nem rossz ötlet, és viszonylag kevés kódból megoldotta.Van még a jQuery Cycle 2 plugin continous slideshow-ja:
http://jquery.malsup.com/cycle2/demo/continuous.php
De speciel pont ez a része nem túl testreszabható.
Az ott szereplő kommentár viszont érdekes lehet: "While the use of continuous slideshows is strongly discouraged due to their impact on CPU usage, they are possible with Cycle2 by setting the easing and timeout options as shown below."======
Összefoglalva:
Szerintem neked a legelső belinkelt példa jönne jól, a kódja is nagyon egyszerű. -
Sk8erPeter
nagyúr
válasz
fordfairlane #4190 üzenetére
Na az meg a másik.
-
Sk8erPeter
nagyúr
válasz
kemkriszt98 #4184 üzenetére
Jim-Y már adott jótanácsokat, ezenfelül még annyi, hogy ilyen "csak-te-tudod-mi-az"-nevű elemeket ne használj, kerüld az ilyen nem túl beszédes "e", meg "o" id-ket, ahogy kerüld az "1", "2" nevű id-ket is, rossz, nem átlátható, más által nem megérthető a kód. A hosszú if-else-eket is érdemes kerülni, használj switch-case-t.
Tényleg rakj fel egy egyszerű példakódot, és akkor gyorsabb lesz a segítségnyújtás.
-
Sk8erPeter
nagyúr
válasz
[pod]Diablo #4178 üzenetére
Nem értem, scrollozni szeretnél 5 elemet, de azt szeretnéd, ha mind az 5 megjelenne egymás mellett? Na de akkor hova scrollozod?
(#4179) [pod]Diablo :
"Kozbe sikerult vegul megoldanom"
Ez vicces, pont most írtam valaki másnak egy másik topicban, hogy ha már valaki a fórumra ír segítségkérési szándékkal, foglalkoznak is a problémájával, de rájön, hogy mit rontott el korábban, akkor illik megírni, mi volt a megoldás, hiszen azért fórum, hogy mások számára is hasznos legyen, erre most Te is előadod...
Szóval mi volt a megoldás a problémádra? Hátha kell valaki másnak is rajtad kívül. -
Sk8erPeter
nagyúr
válasz
[pod]Diablo #4176 üzenetére
Most látom először ezt a plugint, de a dokumentációja elég egyértelmű, nem az elvárt formában adtad meg a hozzá tartozó markupot.
Egyszerűen az unordered list listaelemei helyett egymásba ágyazott divekkel működik.
Itt egy működő példa, elláttam még pár opcióval a doksi alapján (szerk.: ezek persze opcionálisak, nyilván változtasd meg őket saját igényeid szerint (pl. a scrollozás irányát, meg hogy meddig látsszon egy kép, stb.), csak eljátszottam vele egy percig):
http://jsfiddle.net/3WPPq/1/ -
Sk8erPeter
nagyúr
válasz
martonx #4171 üzenetére
Ja igen, az a megoldás még jobb.
https://addons.mozilla.org/hu/firefox/addon/ie-tab/
https://addons.mozilla.org/hu/firefox/addon/ie-tab-2-ff-36/
vagy Chrome-hoz:
https://chrome.google.com/webstore/detail/ie-tab/hehijbfgiekmjfkfjpbkbammjbdenadd -
Sk8erPeter
nagyúr
válasz
BullZeye #4165 üzenetére
Amennyiben User-Agent alapján dönti el, milyen böngészőt használsz, akkor arra vannak User-Agent Switcher bővítmények más böngészőkhöz is.
Viszont elképzelhető, hogy annál a vállalati weboldalnál azért van ilyen megkötés, mert egy régi szutyok, és TÉNYLEG csak IE-ben működik megfelelően (pl. ActiveX controls, ilyesmik). -
Sk8erPeter
nagyúr
válasz
kemkriszt98 #4163 üzenetére
Lehet, hogy a %windir%\System32\drivers\etc\hosts (vagyis C:\Windows\System32\drivers\etc\hosts) fájlodban nincs megfeleltetés a localhostra:
127.0.0.1 localhost(bár tudtommal defaultból szokott lenni)
-
Sk8erPeter
nagyúr
FYI: a Javának nem sok köze van a JavaScripthez, így a topicba sem való.
Lásd az összefoglaló első mondatát (nem véletlenül került oda), azt a részt, ami zárójelbe van téve
(#4159) kemkriszt98 :
Természetesen Jim-Y úgy értette, hogy <script src="change.js"><script> formában tedd a </body> zárótag elé (és ne üres attribútummal, ha ez nem lenne tiszta). Meg amit most írt. -
Sk8erPeter
nagyúr
válasz
kemkriszt98 #4151 üzenetére
A jsbin.com és a jsFiddle.net is úgy működik, hogy injektálja a kódot az éppen megjelenített oldalba, csak külön-külön paneleket biztosít, hogy szépen szétválasztva tudd szerkeszteni a különböző nyelvekhez (CSS, JavaScript, HTML) tartozó kódokat, pont úgy, ahogy "élesben" is illik, csak élesben annyival egészül ki a dolog, hogy ezekre a fájlokra a hivatkozásokat is beleszúrod az oldaladba.
Ez ekvivalens Jim-Y korábbi megoldásával: http://jsbin.com/tusunami/2/edit
és persze a <script> taget akár a </body> zárótag elé is lehetett volna rakni, ha úgy jobban esik.
(A kódot nincs időm átvariálni saját koncepcióra.) -
Sk8erPeter
nagyúr
válasz
kemkriszt98 #4143 üzenetére
Kód nélkül tök felesleges elkezdeni tippelgetni.
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Szerintem az van, amit Karma említett, hogy az .on()-t kellene használnod, a selectek szülőelemére "aggatva", a selectekre szűrve az .on()-nak paraméterként megadott selectorral.
De amit SOHA többé ne csinálj (mert egészségkárosító hatású), az a (#4117) azonosítójú hsz.-edben látható, és ROSSZ, NAGYON ROSSZ:
var value=$(this).children('option:selected').val(); // BORZALMAS
var valueid=$(this).children(':selected').attr("id"); // NE CSINÁLD
var valuechamp=$(this).children(':selected').attr("champ"); // ROSSZ
Tudod, hogy van, amikor egy ilyet leírsz, akkor az egy kismacska életébe kerül.Totálisan feleslegesen futtatod le újra és újra ugyanazt a metódust, ráadásul egymás alatt:
$(this).children(':selected')
--> ennek az értékét tárold el egy VÁLTOZÓBAN, arra találták ki. Ugyanarra az elemre hivatkozol.
Tehát a fentit cseréld le valahogy így:
var $self = $(this);
var $selectedElement = $self.children('option:selected')
var value=$selectedElement.val();
var valueid=$selectedElement.attr("id");
var valuechamp=$selectedElement.attr("champ");a lényeg: a többször használt elemeket tárold el változó(k)ban, ne kérd le őket újra és újra, mert erőforrás-igényes, még ha nem is veszed észre.
-
Sk8erPeter
nagyúr
"Egyébként az ECMAScript 6 terjedéséről mit lehet tudni? Azt olvastam, hogy a Node a 0.11.x-es ágon már támogatja, de stabilizálódni még nem akar... Pedig a generátorok nagyon odavernek."
Ez jó kérdés, én is csak ezt a táblázatot nézegettem:
http://kangax.github.io/es5-compat-table/es6/
pl. Promise konkrétan:
http://kangax.github.io/es5-compat-table/es6/#Promise
Egyébként túl sokat a dologról nem tudok. -
Sk8erPeter
nagyúr
"(Az ígéret egy olyan objektum, ami majd valamikor a jövőben fog kiértékelődni, vagy sikeresen, vagy nem. Mindkét ágra fel lehet iratkozni külön, és ha láncba fűzi őket az ember, akkor úgy viselkedik, mint a rendes függvényhívások - az eredmények lépésről lépésre átpasszolódnak, a hiba meg az egészet megszakítja.)"
JavaScript Promise-témában ECMAScript 6-os feature-ök kapcsán ezt a cikket olvasgattam múltkor, és igen jó:
JavaScript Promises - There and back again
http://www.html5rocks.com/en/tutorials/es6/promises/ -
Sk8erPeter
nagyúr
válasz
martonx #4095 üzenetére
Ja, vagy használható simán a this is az event handlerben, ugyanarra vonatkozik.
(#4089) Jim-Y :
még erre a részre az előbb elfelejtettem reagálni:
"Hát de ez mi? Nem tudom kitörölni a hsz-ből a dőlt bekezdéseket, mert visszteszi őket :/"
Egyértelmű, a szövegedben látszik:
"Na és valahol itt írtam be a topikba, hogy hátha valahogy meg lehet úgy csinálni, hogy az eventHandler függvénynek átadom a aButtons(i) referenciát mint thisArg"
-->
itt az "aButtons[i] referenciát" szövegrésznél a szögletes zárójelbe rakott [i] zavarta meg egész konkrétan. Elfelejtetted a Konvertálatlan/Programkód gombok valamelyikének használatát. -
Sk8erPeter
nagyúr
Hű basszus, na ez ciki, jó tompa voltam, bocsánat. Most visszanézve a hsz.-eket, így már tiszta, mit szerettél volna. Azt nem fogtam fel eredetileg, hogy mit is szeretnél szebbé tenni, nem is beszélve arról, hogy amikor beszéltünk róla, még a .bind() sem ugrott be, pedig elég kézenfekvő, és még az itteni kódodban is szerepel...
Szerintem a legrövidebben úgy lehetne jól megfogalmazni, hogy az adott elemre vonatkozó event handler átadásának pillanatában szeretnél már vonatkozó paramétereket is átpasszolni, az event handlert pedig teljesen általánosan "megfogalmazni", hogy ne legyen tele ronda if-else-ekkel vagy switch-case-ekkel pl. az event.targettől függően.
Szóval sorry, ez most nem az én napom.(#4092) Karma :
"nem értem az ellenhurrogást, hiszen a this bepasszolása az eseménykezelőnek igencsak alapvető dolog"
Jogos, és jó is, hogy beírtad a megoldást; de szerintem jelen esetben pont nem csak a this bepasszolása a lényeg, hanem az egyéb paramétereké (végül is elvileg ez volt a kérdés, nem az, hogy hogy tudja használni a this-t), hiszen a this magában az event handlerben is "elérhető" lenne. Úgy értem, pont a this miatt a .bind() használatának előnye nem pont ennél a feladatnál kristályosodik ki igazán, mert a this működik az ebben a példában szereplő btnHandlerWithoutParams fv.-nél is: http://jsfiddle.net/8LCcR/2/ -
Sk8erPeter
nagyúr
Nem értelek, itt már egy az egyben azt írtam le, mit tudsz csinálni.
"item.addEventListener('clck', csodalatosEventHandler -> na ennek akarok paramétert megadni. Ugyanis ezt a függvényt újrahasznosítanám később is."
Miért akarsz olyan módon csinálni valamit, amire nem való, vagy amit nem lehet vele?
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener
target.addEventListener(type, listener[, useCapture]);
target.addEventListener(type, listener[, useCapture, wantsUntrusted ]); // Gecko/Mozilla only
Ez a fejléc, és kész.Azt nem fejtetted ki, mi a gondod azzal, hogy az event handlerben kezeled le, mi történjen a kattintás által célzott (e.target) elemmel?
Így szokás ezt elintézni, és ennyi. Hogy most az abban történteket egy erre külön kitalált függvényben intézed-e még el, vagy aztán azonbelül hány függvényt/metódust hívogatsz, az tervezői döntés.
Azt nem mesélted el még, mi az alapfeladat, ami miatt zavar, hogy az addEventListenernek nem tudsz átadni olyan paramétereket, amit az nem enged...Egyébként ilyen alapon saját addEventListenert is definiálhatsz valami más néven, aminek beadhatsz különböző paramétereket, wrappert építve az alap addEventListener köré, aztán egyedileg kezelve, csak nem sok értelmét látom.
Ja, még egy fontos dolog: használhatod nyugodtan a data-attribútumokat, így lényegében "be is drótozhatsz" bizonyos tulajdonságokat az elembe, amik konkrétan arra vonatkoznak, ezeket meg lekérheted a JavaScript-kódból. Ez is lehet egyfajta "paraméterezés", és akkor lehet, hogy megkerülted a problémát, mert nem kell óriási switch-case. (Ne brutálsok if-else-t írjál, ha már, erre találták ki a switch-case-t.
De előbb gondold végig, vagy írd le ide, mit szeretnél konkrétan.)
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #4082 üzenetére
ja, itt amúgy nyilván nálad a
buttons[i].addEventListener('click', csodalatosEventHandler);
sor valami for cikluson belül lenne (kiindulva a buttons[i] kódrészletedből), a többi pedig természetesen azonkívül, csak a pontosság kedvéért -
Sk8erPeter
nagyúr
Mivel neked a this.akarmi kell, miért nem magában az event handlerben passzolod át a szükséges paramétereket a goTo() akármilyen függvénynek?
Amúgy kerülendő, hogy egy ciklusban definiálsz anonim függvényként event handlereket, inkább legyen egy "közös" event handlered, amire kb. függvénypointert adsz át:function tokMindegy(valamiObject, blablaParams) {
// ...
}
function csodalatosEventHandler(e) {
tokMindegy(e.target, "bizony");
// ...
}
buttons[i].addEventListener('click', csodalatosEventHandler); -
Sk8erPeter
nagyúr
válasz
trisztan94 #4072 üzenetére
Ha jogos dolgokért szólsz be, akkor azzal semmi gond nincs.
Pl. jelen esetben jogos a megjegyzésed.Egyébként pont ezért rakattam ezt az összefoglalóba:
http://www.slideshare.net/fgalassi/refactoring-to-unobtrusive-javascript -
Sk8erPeter
nagyúr
Nem az én kódom, mivel mint látható volt, az openjs.com-ról szedtem, de egyébként ez a kód működőképes, ami ott van.
Gondold át jobban: a this jelen esetben az egész window objektumra vonatkozik. Mivel a függvény így a this része, a this.hasClass() működik is...
Azt is használhatnád - bár elég undormány lenne - hogy this.alert('akarmi'), és működne.
Hogy sikerült ezt így 124123 év múltán megtalálni?
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
A click eseményt - azért lett "e", mert így rövidítettem az "event" szót, de átnevezhetnéd azt a paramétert "kiskutyafule" változónévre is. Érdemes ezt is kiíratnod konzolra - csak tesztelés erejéig, ilyenek ne maradjanak benne az éles kódban!! -, hogy lásd, mi van benne:
console.log('event: ', e);
Hasznos tud lenni, ha ismered a tartalmát: le tudod kérni például a klikkelés koordinátáit, a célzott elemet (a jelen példában e.target, ennek aztán további attribútumai vannak, mint pl. ha lenne id-je az adott elemnek, akkor e.target.id, a "name" attribútum az e.target.name segítségével, a "value" pedig az e.target.value-val érhető el, le tudod kérni a szülőelemet az e.target.parentNode-dal, és így tovább), és egyebeket. -
Sk8erPeter
nagyúr
Pedig kell az index
Érdemes használnod a debuggoláshoz hasznos gyorseszközöket, nyisd meg a használt böngésző fejlesztőpaneljét (Ctrl+Shift+I vagy F12), kattints a Console fülre, és írasd ki az aktuális elemet, hogy megtudd, mi van benne, például:
console.log("Documents named 'x': ", document.getElementsByName("x"));
-
Sk8erPeter
nagyúr
válasz
trisztan94 #4047 üzenetére
Nem akarok már megint köcsög lenni, nem rohadékságból kérdezem, bár tudom, hogy én vagyok a beszólogatós szemét, de miért készítesz tutorialt olyan témáról, ahol még ingoványos talajon állsz? Bár megértem, hogy örülsz, ha kapsz pozitív feedbacket, de én nem mernék addig készíteni tutorialt, amíg nem tanultam meg mondjuk az alapvető webfejlesztést elősegítő eszközök használatát, az olyanokét, mint a webfejlesztő panel (Chrome Developer Tools (Ctrl+Shift+I vagy F12), Firefox beépítettje (Ctrl+Shift+I) vagy Firebug (extension-telepítés után F12), stb.), hogy kiderítsem, adott esetben mi lehet a gond.
Na, de ez volt az OFF része, válaszolok is a kérdésre.
Lenyitod az említett fejlesztői paneleket, és megtudod a választ, a linkre kattintás utáni állapotokat mutatom, mindenhol bekereteztem a lényeget:Chrome:
Network fül:
Console:
"Refused to display 'https://www.google.hu/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'."x-frame-options:SAMEORIGIN
Firefox:
"Load denied by X-Frame-Options: https://www.google.hu/ does not permit cross-origin framing."====
Átírod a http://google.hu-t http://example.com-ra, és BANG:
http://jsfiddle.net/aA8d9/2/VAGY kipróbálod ezt a saját kis tesztkörnyezetedben, ahol nem egy frame-be töltöd be, és megint csak BANG, váó, működik.
A miértek a hibaüzenetekből kideríthetők, de kérdezz, ha nem tiszta.
Javasolt olvasnivaló pl.:
https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options -
Sk8erPeter
nagyúr
válasz
trisztan94 #4029 üzenetére
Hogy micsoda?
Az event.preventDefault() NEM deprecated, hogy lenne már az?!
https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault#Notes
meg
http://api.jquery.com/event.preventdefault/Szerintem te ismét kevered a szezont a fazonnal:
"event.returnValue is deprecated. Please use the standard event.preventDefault() instead"
http://stackoverflow.com/questions/20045162/event-returnvalue-is-deprecated-please-use-the-standard-event-preventdefault
https://github.com/angular/angular.js/issues/4557
https://drupal.org/node/2170221-->
http://bugs.jquery.com/ticket/14282
http://bugs.jquery.com/ticket/14320Nagyon nem ugyanaz, hogy az event.returnValue deprecated, vagy a másik...
Ráadásul még az sem stimmel, hogy a Firebug dobná, mert a Chrome konzolja írja ki ezt, Firebug nem sír érte. (Kipróbáltam, mert pont erre emlékeztem.)
Ne vezessük félre a népet téves információval, mielőtt utánanéznénk, légyszi. -
Sk8erPeter
nagyúr
válasz
leximester #4021 üzenetére
Pedig jó az, amit Jim-Y írt.
Én sem értem sajnos ennyiből, mi a gond, tényleg látni kéne a kódodat, hogy pontosan mi vérzik el, és hol.
De ha jól értem, valami olyasmi, hogy callback-ként szeretnéd meghívni a .restart() metódust, és az nem megy. Vagy nem erre gondoltál?szerk.:
(#4023) : ebből még mindig nem tudtuk meg, konkrétan, pontosan mi a baj, hol hasal el a dolog, és hogyan csináltad C#-ban, hogyan JavaScriptben.
Ha a C#-kódban van a gond: C# programozás topic. -
-
Sk8erPeter
nagyúr
válasz
Fr3eWar #4015 üzenetére
És mindezt nekem magamtól kellett volna kitalálnom, hogy mi a célod, hogy közöd nincs a weboldalhoz, hogy nem szakmai kérdésed van, és amúgy is micsoda szemétláda vagyok, hogy szóvá teszem, hogy semmi köze a topichoz annak, amit kérdezel. OK, vállalom.
Sorry, túl sokan tévednek el.
De adtál legalább egy tippet: ezt a topicot is át kell nevezni JavaScript topicról JavaScript-programozásra, mert itt konkrétan arról van szó.És akkor félreértés sincs.
-
Sk8erPeter
nagyúr
válasz
Fr3eWar #4009 üzenetére
Még jó, hogy az összefoglalóba direkt belerakattam, hogy a JavaScript NEM ugyanaz, mint a Java...
Ezek szerint nem lett túl hatékony. Van Java topic.
Nem értem, minek kell 2014-ben Java appletekkel kinevettetnie magát bármilyen fejlesztőnek, de gondolom ez valami legacy weboldal, amit megörököltél. -
Sk8erPeter
nagyúr
"Mivel szedted így rendbe a kódot?"
Én ezt szoktam ilyen célra használni a JSFiddle TidyUpján kívül: http://jsbeautifier.org/ -
Sk8erPeter
nagyúr
Hmm, Androiddal kapcsolatban nincs fejlesztői tapasztalatom még, de jó ezeket tudni. Remekül hangzik.
(#3986) martonx :
Jaja, annak még borzalmasabb a dokumentációja. Legalább a NuSOAP-nak a kódjában található kommentárokból valamelyest ki tudtam következtetni, mi a helyzet.Ja, egyébként amikor néztem, tehát már 2,5 éve, akkor a kódja is finoman szólva hagyott némi kívánnivalót maga után (eleve vicces, hogy a kódját és az abban található kommenteket kellett tanulmányoznom, mert különben elakadtam). No mindegy, a franc sem akar SOAP-ozni.
Csak ha muszáj, akkor meg olyan old school, mint manapság kazettán kölcsönadni valakinek egy zenét.
-
Sk8erPeter
nagyúr
"Nekem nagyon az az érzésem, mint Android kapcsán is, hogy a SOAP egy régi idők letűnt megoldása, amit a mostani eszközökkel már nem kéne erőltetni."
Én is egyetértek a SOAP-os résszel, és amit martonx mond, az is igaz, ahány eszköz/nyelv, annyiféle kimenet, annyiféle idióta hiba.
Mondjuk az is hozzátartozik, hogy én különösen PHP+NuSOAP-pal való generálgatás során gyűlöltem meg (itt van szenvedéseim egy lenyomata), ezért természetesen már önmagában a PHP is hibáztatható, mint gyengén típusos nyelv (ergo nem lehet vele kattintásra generálni WSDL-t, mint Visual Studio-ban pl. C#-kódból), plusz a NuSOAP is, mint akkoriban elavult, rettentő szarul dokumentált library (nem tudom, most mi a helyzet vele, csak annyit láttam, hogy végül is 2013 júniusában még módosítottak rajta valamit). De az eredeti állításokon ez nem változtat, mert ha másféle library-t használtam, akkor meg más kimenetet kaptam. És akkor meg azt lehetett "debuggolni". Még ez a NuSOAP volt a legkezelhetőbb, amivel AKKORIBAN én találkoztam (azóta nem is SOAP-oztam szerencsére), pedig az elég szomorú (volt akkor mindenképp).De az Androiddal kapcsolatos részt nem értettem, hogy mire érted.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #3968 üzenetére
Biztos velem van a baj, de én ezeken a kódokon nem tudok kiigazodni, meg nem vágom, hogy készülnek ezek, és miért így. Semmit nem fejez ki a kód az elvárt struktúráról, nincs benne megkötés, normális hibaellenőrzés, és igazából a kódból nem értem meg, mi a cél.
Igazából ha egy rövid jó leírást kaphatnánk magáról a feladatról, meg a kapott adatstruktúra konkrét felépítéséről, akkor lehet, hogy tudnánk javasolni alternatív megoldást, ami szebb kódot eredményezne. (Azt is kéne tudni, tudsz-e változtatni a kapott adatstuktúrán, vagy arra nincs lehetőséged, mert nem te rakod össze.) Ebben a formában eléggé tákolás feelingje van a dolognak. -
Sk8erPeter
nagyúr
válasz
trisztan94 #3951 üzenetére
Nem tudom, ezt hogy lehetett ilyen bonyolultan leírni, nekem 3-szor kellett elolvasnom, hogy felfogjam.
Ez kábé a látatlanban debuggolhatatlan kategória. Mi van a waypoints tömbben, amibe pusholod a locations[0].positiont? Azután van egy for ciklus, aminek során kétszer íródik ki ugyanaz az elem, meg kéne nézni, a push előtt nincs-e már benne eleve az az elem, ami duplikálódk. Ennél konkrétabbat akkor tudnánk mondani neked, ha láthatnánk valami működő példát.
-
Sk8erPeter
nagyúr
válasz
martonx #3948 üzenetére
De az JScript-interpreter, nem JavaScript.
Komolyra fordítva amúgy igazad van (mondjuk nálam nem túl sokszor merült fel az igény a cscript.exe-vel történő JS-futtatásra, az ilyen módon történő tesztelésre), szerintem is jobb lenne egy külön részbe tenni a Node.js-t úgy általában, azt inkább a haladóknak ajánlva, és a kezdőknek szóló részből egyszerűen kiszedni, hogy ne zavarjuk össze a kezdő ember fejét - szerintem jobb, ha nem kavarunk be neki a szerveroldali programozást lehetővé tevő nodejs-sel, mert nem fogja tudni hova tenni, amikor ő csak eseménykezelőt akart kötni egy gomb klikk eseményére, vagy JS-sel meg akarta változtatni egy elem betűinek színét. Vagy max. nagyon OFF-ként benthagyni, de én sem látom szükségét.
-
Sk8erPeter
nagyúr
Nem szántam offenzívnek, mert amúgy hasznos anyagokat gyűjtöttél össze, raktál bele energiát, bocs, ha úgy tűnt.
Inkább jelezni szerettem volna, hogy az említett rész a Node.js-sel ebben a formában még egy kezdőt nagyon nagy eséllyel teljesen összezavar, mert abban a fázisban az sem tiszta, mi az a kliensoldali és szerveroldali JavaScript-kód, mi az a Node.js, és még kismilliónyi lehetőség van a Node.js telepítése előtt, amivel ki lehet próbálni a JS-kódot. Na meg akkor már a Windows-ra telepítés módszerét is meg kéne említeni.Mondjuk az csak egy installer-fájl a nodejs.org-ról: http://nodejs.org/. Amúgy érdekességként: Windows-on lehetséges Web Platform Installeren keresztül is bekattintani a Node.js telepítését.
"Nekem sokszor nagyon jól jött volna, ha ezt már korábban ismerem, például ha csak ki akarom próbálni élesben, hogy mit csinál a map(), akkor nem csinálok
- egy .js fájlt benne implementálva egy tömböt, meghívva rá a map-et.
- illetve egy html fájlt, amiben hivatkozok a js fájlra,
- majd a html fájlt megnyitom a böngészőben
Vagy,
- nem nyitok egy firefoxot, benne egy konzolt
- meg egy scratchpad-et
Vagy megyek a jsfiddle-re"Ezek például mind jó alternatívák, amiket meg lehet említeni.
A böngészőt az ember úgyis folyton megnyitva tartja.Ott nyom egy Ctrl+Shift+I (vagy F12) billentyűkombót, és az ennek segítségével előhívható fejlesztői panelon keresztül, a Console fülön tud tenni egy gyorspróbát a JS-kódokkal; a fejlesztői panellel úgyis minden webfejlesztőnek meg kell ismerkednie.
"Hanem nyitok pl egy aptana studio-t, vagy a geditet (mindkettőben van embedded terminal) és sokkal gyorsabban tudom tesztelni a megírt kódomat, mint a fenti esetekben."
Ez is egy módszer.
Egy haladó részben esetleg azt is meg lehetne említeni, hogy mind böngészőn, mind integrált fejlesztőkörnyezeten (IDE) keresztül van lehetőség JavaScript-kód debuggolására, utóbbira példa a NetBeans Connector, ami szerintem nagyon hasznos, itt tettem róla említést:
http://prohardver.hu/tema/weblap_keszites/hsz_10596-10596.html
http://stackoverflow.com/questions/15801506/how-to-debug-javascript-and-php-togheter-in-the-same-netbeans-7-3-project/20809988#20809988Szívesen foglalkoznék ezzel, de se időm, se energiám most erre.
(#3944) BomiBoogie :
OK, köszi, reméljük, lesz előbb-utóbb valakinek ideje rá, vagy nekem, vagy másnak. -
Sk8erPeter
nagyúr
válasz
Sk8erPeter #3938 üzenetére
Most nézem a Jim-Y jegyzetekkel kiegészített összefoglalót... na basszus, nem ártott volna még lektorálni előtte.
Én inkább az elején lévő linkekre koncentráltam, amiket be lehetett volna rakni, de vannak benne rendkívül összeszedetlen részek, például van egy ilyen rész: "Ha a saját gépünkön szeretnénk tesztelni a megírt js kódunkat" - utána meg az következik, hogy hogyan tudjuk felrakni a Node.js-t...
Mégis hogy jön ide? Vagy akkor miért nincs kiegészítve azzal, hogy mi a különbség a kliensoldali és szerveroldali JavaScript-kódok között? Egy olyan emberke, aki épp szeretné elsajátítani a JavaScriptet, az valószínűleg teljesen össze lesz zavarva ezek után.
-
Sk8erPeter
nagyúr
"Az eseménykezelőknél ez lehet, hogy így van (ezt nem tudtam), de általánosságban, javascriptben, pedig úgy, ahogy írtam."
Ezt hogy érted, hogy általánosságban? Mármint mire vonatkozóan?(#3928) :
ezt a linkes dolgot végül elfelejtettem, szerintem nyugodtan mehetnek a linkjeid végül is az összefoglalóba, hasznos anyagokat szedtél össze, főleg a Douglas Crockford-előadássorozat jó lesz oda.
Szóval nyugodtan berakathatnád a modker topicban!
Csak a Twitteres követősdi nem kell szerintem. -
Sk8erPeter
nagyúr
Tegnap én is csináltam egy nagyon rövidet, csak ilyen tök egyszerűekkel, hogy linkek jsFiddle-re és társaira, és hogy aztán bővítjük, csak aztán nem küldtem el a modker topicba, de most megtettem, de majd holnap átrágom azt is, amit írtál.
Most csak nagyon gyorsan átfutottam, és jó linkek vannak benne, de szerintem kissé túl sok, nem tudom, ki fog elolvasni/megnézni ennyi mindent; például a végefelé a Twitteres linkek úgy, ahogy van, felejtősek, tök felesleges ezeket belerakni, szerintem nem illenek a PH-s összefoglalóba (érdekességként lehet őket követni, de ide inkább a tanulást elősegítő vagy hülye kérdéseket megelőző linkeket kellene bepakolni). -
Sk8erPeter
nagyúr
válasz
fordfairlane #3927 üzenetére
Ja értem, ezek szerint akkor mindketten félreértettük, amire gondoltál, sorry. Eleinte azt hittem, azt véded, ha valaki behányja a konkrét függvényhívást vagy akár implementációt az onclick-be és társaiba, de így utólag visszaolvasva egyértelműen kihangsúlyoztad, hogy nem erről van szó, csak akkor nem jött át, bocs.
-
Sk8erPeter
nagyúr
válasz
fordfairlane #3922 üzenetére
Mit tekintünk ez esetben "tisztességes implementációnak"?
"Az, hogy te mit tartasz jónak, meg logikusnak, meg karbantarthatónak, az ezen a véleményemen nem fog változtatni."
Te ezek szerint nem tartod karbantarthatóbbnak a szeparált JS-kódot?
Igazából te sem fogsz változtatni a véleményemen, mert szerintem ettől még továbbra is rontja a karbantarthatóságot, és még ha régen én is csináltam ilyesmit, ma már inkább nem követnék el ilyen merényletet, csak nagyon kihangsúlyoztad, hogy ezt csak én gondolom így. Pedig a korábban belinkelt cikk is pontosan ennek a kutyulódásnak a negatív hatásait fejtegeti röviden.===========
Más: össze kéne már gyűjtenünk közös erővel olyan linkeket, amiket bedobhatnánk a téma-összefoglalóba. Szóval ha van olyan cikk, amit jónak tartotok, és kapcsolódik a JavaScripthez, akkor dobjátok be plíz!
-
Sk8erPeter
nagyúr
válasz
martonx #3918 üzenetére
Hát ja. Kezdőnek egyértelmű, hogy bűn jQuery-vel kezdenie, mert később már nem fogja akarni megtanulni, milyen munkafolyamatot is egyszerűsít le.
Mondjuk szerencsére a 11-es verzió óta már az IE sem számít annyira szitokszónak, mint régen (még ha a felhasználói felület ostoba is még mindig), így ritkul az, hogy böngészőspecifikus baromságokat kelljen tákolni (lásd az IE-specifikus attachEventet régről az addEventListenerrel szemben), ezért a plain JavaScript is talán használhatóbbá kezd válni, mint régen, ami egyébként vicces helyzet, de azért még mindig sokat segít a cross-browseresítésben a jQuery... aztán az megint egy következő szint, hogy valaki értse, hogy a $('#test') és document.getElementById('test') hiába hivatkozik ugyanarra az elemre, attól még az első egy jQuery objectet ad vissza, a másik pedig egy Element objectet...
Persze mindezek értéséhez/sejtéséhez először is tudni kellene használni a dokumentációkat, ami ahogy a topicokban észreveszem, sajnos cseppet sem magától értetődő. Meg hát érted, majd a fórumon a srácok megmondják...(#3919) cSuwwi :
Sztem azért nem kopik ki, mert az onclick és többi hasonló attribútumot eleinte gyorsabb bepötyögni egyből az elemhez, és meglátni, hogy mi történik - ez a tanulási fázisban még az elfogadható érvek közé tartozik, én is így kezdtem, csak van, aki aztán megragad ezen a szinten, és azt mondja, hogy de hát így könnyebb olvasni, és egyből tudom, hogy ahhoz az elemhez milyen eseménykezelő tartozik. Na ez egy baromság. Sokkal nehezebb karbantartani egy ilyen széttákolt kódot. Eleve ott kezdődik, hogy mindegyik nyelvnek legyen meg a maga jól körülhatárolható felelőssége, ne legyen szétgányolva a JS-kód CSS-sel vagy HTML-lel se. A PHP-kódban se legyen lehetőleg stringként inline behányt JavaScript-kód. Meg hasonlók. Persze vannak fejlesztők, akik ezekre is megtalálják az önigazoló magyarázatokat, de nem ők csinálják jól.Szerintem erről ez egy nagyon jó összefoglaló diasor:
Refactoring to Unobtrusive JavaScript
http://www.slideshare.net/fgalassi/refactoring-to-unobtrusive-javascript
(lehet, hogy meg is kérem, hogy ezt tegyék be az 1. hsz.-be, csak hogy mindenkinek szem előtt legyen, nagyon tömören elmagyarázva, mit, hogyan kéne)Na meg amúgy a net tele van szemétrevaló tutorialokkal is, amik a rossz szokásokat verik az emberek fejébe.
=====
(#3920) fordfairlane :
Kicsit később küldtem el, mint Te, mert kotorásztam a belinkelt diasor után, így csak most látom, amit írtál, de közben Te is azt a szempontot írod, hogy látod magánál az elemnél, hogy hozzá van kötve az eseménykezelő, és az jó... de ne már.
Ezzel nyugodtan alá lehetne támasztani azt is, hogy formvalidálásnál minden egyes inputra külön-külön dobjuk be mondjuk onblurre a validáló függvényt. Vagy akkor ez ne legyen, csak egyszer, magán a form csomóponton legyen egy onsubmit-attribútumba bedobott függvénynév, mert az épp a határon mozgolódik a tákolmány és a karbantartható kód között? Érted, ezzel a hozzáállással (mondjuk ha valaki ilyen tutorialt ír) a kezdők is kedvet kaphatnak hozzá, hogy na, akkor ilyen alapon mehet minden az attribútumokba, mert azt írták, hogy jó az, és akkor ránézek a HTML-kódra, és tök jó, hogy egyben látom a JavaScript-kódot is. De akkor ugyanígy nem lenne helytelen az sem, hogy valaki style-attribútumban határozza meg az adott elem kinézetét. Az sem magyarázható, bár elméletileg ezen az elven az is jó lehetne, mivel akkor tök jó, hogy helyben látja az illető, hogy fog kinézni az elem. -
Sk8erPeter
nagyúr
válasz
martonx #3915 üzenetére
Most miért?
Amúgy meg ő kérdezte, hát akkor kapott rá választ.
Bár most így hirtelen nem jön le, mi a magyarázatomból az érthetetlen, de majd megírja.
(#3916) cSuwwi :
.bind() volt már 1.0-tól, .live() 1.3-tól, meg .delegate() volt 1.4.2-től... 1.7 után szerencsére már egységesen az .on() az ajánlott.lásd a .live() dokumentációjában:
$( selector ).live( events, data, handler ); // jQuery 1.3+
$( document ).delegate( selector, events, data, handler ); // jQuery 1.4.3+
$( document ).on( events, selector, data, handler ); // jQuery 1.7+"jQ előtt az addeventlistener-es megoldások. A click esemény az IE kivételével mindenhol click volt, IE alatt mindenhova kellett az "on" előtag (onclick, onsubmit, ...)."
Nemcsak .addEventListener, hanem .attachEvent az IE miatt, if-else formában..."különböző tagekre ráaggatott eventekkel, onclick buttonoknál, vagy onsubmit formokon"
Aki inline onclick, onsubmit, stb. attribútumokat használ, az meg is érdemli."sok "on" van és mind ugyanaz
"
Azt hogy érted, hogy "ugyanaz"?Azért eléggé más tud lenni a szerepük az eventeknek...
-
Sk8erPeter
nagyúr
"Azt hittem valamiért, h. van egy onclick is ami egyenlő az .on("click"-el"
Igen, lényegét tekintve ugyanaz, lásd a jQuery source code-ot a jQuery.fn.click-nél:
http://james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.fn.clickfunction (data, fn) {
return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
}magyarul a jQuery.on() hívódik meg a .click() esetén is, csak nyilván a 'click' paraméterrel. Ugyanígy néz ki például a .dblclick() is ([link]).
A jQuery.on()-nál már láthatsz viszont különbséget, csak kukkants rá:
http://james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.fn.onAz .on() általános eseménykezelő-hozzákapcsoló.
Lehetne akár .on('dblclick', ...) is. Annyi a különbség, hogy a $('#valami, .blabla').dblclick(...) egyértelműen a selectorral kijelölt elemekhez kapcsol egyértelműen megnevezett eseménykezelőt, és itt még nem tudsz átadni selectort, ami szűr azokra az elemekre, amiknek ki kéne váltani az adott eseményt, és ezt a különbséget emeltem ki itt a tbody-tr példánál. Tehát például a .click() nem fog működni AJAX-szal hozzáadott elemekre. -
Sk8erPeter
nagyúr
válasz
trisztan94 #3909 üzenetére
Hát köszi. Igyekszik a zzember. Legalább később lehet linkelgetni az ilyen válaszokat, ha valaki rákérdez, és akkor egy csomó időt megspóroltam vele, hogy a megírása kicsit pöcsölős volt.
-
Sk8erPeter
nagyúr
Hi! Az események buborékszerű felszivárgásáról itt írtam, belinkelve egy példát:
http://prohardver.hu/tema/weblap_keszites/hsz_10515-10516.html
http://prohardver.hu/tema/weblap_keszites/hsz_10543-10543.htmlAz AJAX-os betöltött elemekre kötött event handlerekre jó példa a jQuery.on(), ahol a "delegated events" rész az érdekes, itt tök jól elmagyarázza a helyzetet (kiemeltem a nagyon fontos részeket):
"Delegated events have the advantage that they can process events from descendant elements that are added to the document at a later time. By picking an element that is guaranteed to be present at the time the delegated event handler is attached, you can use delegated events to avoid the need to frequently attach and remove event handlers. This element could be the container element of a view in a Model-View-Controller design, for example, or document if the event handler wants to monitor all bubbling events in the document. The document element is available in the head of the document before loading any other HTML, so it is safe to attach events there without waiting for the document to be ready.
In addition to their ability to handle events on descendant elements not yet created, another advantage of delegated events is their potential for much lower overhead when many elements must be monitored. On a data table with 1,000 rows in its tbody, this example attaches a handler to 1,000 elements:
$( "#dataTable tbody tr" ).on( "click", function() {
alert( $( this ).text() );
});A delegated-events approach attaches an event handler to only one element, the tbody, and the event only needs to bubble up one level (from the clicked tr to tbody):
$( "#dataTable tbody" ).on( "click", "tr", function() {
alert( $( this ).text() );
});[...]
Attaching many delegated event handlers near the top of the document tree can degrade performance. Each time the event occurs, jQuery must compare all selectors of all attached events of that type to every element in the path from the event target up to the top of the document. For best performance, attach delegated events at a document location as close as possible to the target elements. Avoid excessive use of document or document.body for delegated events on large documents.
jQuery can process simple selectors of the form tag#id.class very quickly when they are used to filter delegated events. So, "#myForm", "a.external", and "button" are all fast selectors. Delegated events that use more complex selectors, particularly hierarchical ones, can be several times slower--although they are still fast enough for most applications. Hierarchical selectors can often be avoided simply by attaching the handler to a more appropriate point in the document. For example, instead of $( "body" ).on( "click", "#commentForm .addNew", addComment ) use $( "#commentForm" ).on( "click", ".addNew", addComment )."
Itt tehát a példában az eseménykezelőt a tbody-ra kötötte, ahelyett, hogy az összes tr-re tette volna ugyanezt, így az eseménynek csak pontosan egy szintet kell buborékszerűen felúsznia, a klikkelt tr elemből a tbody felé.
Ide felraktam egy egyszerű példát:
http://jsfiddle.net/Sk8erPeter/Tpc3k/
itt például gombokat adok hozzá egy container elemhez. Az első példában csak az első gomb "reagál" (dob alert() ablakot), mert konkrétan a kód lefutásának pillanatában jelenlévő button elemre kötöttem az event handlert; a második esetben viszont amikor hozzáadok újabb gombokat, azok is dobnak alert()-ablakokat, hiszen ott azt határoztam meg, hogy a szülőelemre legyen kötve az event handler (egyébként itt a lényeg a hierarchia, nem az, hogy közvetlen szülőeleme legyen!), és megadtam egy selectort is (ami a "button"), hogy a leszármazott elemek közül ezekre szűrjön az eseménykezelés során, ezek triggereljék a click eseményt.
Lásd a doksiban a leírást a selectorra:
selector
Type: String
A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.Tehát a különbség:
első:
$container1.find('button').on('click', function (event) { ... } );
második:
$container2.on('click', 'button', function (event) { ... } );Remélem, nagyjából érthető, ha valami nem tiszta, mert bonyolultan írtam, kérdezz nyugodtan
-
Sk8erPeter
nagyúr
válasz
tilla23 #3899 üzenetére
[link] - itt megkérdeztem, a naptár napjaira fog-e kattintani a felhasználó, tehát a napok legyenek-e belinkelve, de azt írta, "Nem a látogató választja a linket és nézi meg azt vagy azt az oldalt, hanem készen kapja az előre megírt szöveget, adatokat." Fogalmam sincs, ez mit jelent. Sajnos a leírásnak ebben a formában nem sok értelme van, ember legyen a talpán, aki ilyen specifikációból kihámozza, pontosan mit is kell csinálni.
Amennyit összeraktam az egész kívánságából, az alapján továbbra sem értem, az egész feladatnak mi köze van a JavaScripthez. Szerintem nem a kliensoldali részét kellene megvalósítania, hanem a szerveroldali sem néz ki még sehogy. -
Sk8erPeter
nagyúr
Nem értem a feladatot.
"pl Z hónap, 7-ikén a 007.htm és 007.gif"
Itt most naptárban lévő napok vannak belinkelve a nap számának megfelelő fájlra, és abból kéne képeket betölteni? Hogyan, hogy fog kinézni? Miért kell ehhez JavaScript, hogy kell elképzelni a megoldást, amit szeretnél? -
Sk8erPeter
nagyúr
Jaja, már rémlik.
Most volt egy kis időm, kiegészítettem neked minimális plusz kóddal az előzőt, ami annyit csinál, hogy hozzátesz némi késleltetést JavaScripttel a menüelemek eltüntetéséhez, hogy elkerülhető legyen az almenük túl gyors eltűnése: így a látogatónak van egy kis plusz ideje a navigálgatáshoz.
Jelenleg 1,5 másodpercet tesz hozzá pluszban, de ezt bármikor könnyen megnövelheted/csökkentheted.
A működése egyszerű: hozzátesz egy "hovered" osztályt ahhoz a list itemhez, amely gyerekeleme fölé vitted az egeret. A CSS-kódot csak azzal egészítettem ki, hogy a "hovered" osztállyal ellátott elemekre is vonatkozzon az almenü-megjelenítés.
A CSS-kódban a /* PETE */ kommenttel jelzett kódok azok, amiket hozzátettem; na meg ott van a kommentezett, elég rövid JS-kód.http://jsfiddle.net/Sk8erPeter/96Bu8/16/
Szerintem érdemes lenne ezt beleraknod az oldalad kódjába, hogy használhatóbb legyen a navigációs menü, és ne legyen frusztráló a látogatóid számára.
Szerk.: jQuery-vel írtam meg, mert azt úgyis használod az oldaladon.
-
-
Sk8erPeter
nagyúr
Szívesen, hogyan oldottad meg végül?
Amúgy megnéztem az oldalt, határozottan jobb, hogy nem JavaScripttel van megoldva.Fura volt, amikor kikapcsoltam a JavaScriptet, és szétesősebben nézett ki, így már tök korrekt.
A menüre emlékeztem, hogy mintha ezen alakítgattunk volna valamit régebben, hogy JS nélkül is menjen, vagy valami kinézettel kapcsolatos CSS-buherát.
Viszont azt tényleg megcsinálhatnád valahogy, hogy legyen némi késleltetés a menüváltásban, ha máshova viszem az egérkurzort, mert ilyen vékonyka menücsík esetében nagyon könnyű "elrontani" a navigációt, és más fölé vinni az egeret, és biztos más is belefut, az meg nagyon sokat ront egy oldal összképén, ha van egy ilyen frusztráló dolog - a menü meg elég fontos része egy oldalnak (meghatározza, hogy egy felhasználó hogyan tud egyik oldalról a másikra lépegetni, így kiemelt fontosságú).
Például a Rólunk felirat almenüire szeretnék kattintani, és nagyon könnyű vagy túlzottan fölé- (a fejlécben látható logóra, ami szintén link) vagy alá- (valamelyik akciót hirdető linkre) vagy melléhúzni (pl. másik menüpontra) az egeret, és akkor máris nem tudom elérni az almenüpontokat. -
Sk8erPeter
nagyúr
válasz
trisztan94 #3870 üzenetére
Ő, ezt arra mondtam annak idején, ha valaki gyökérségeket kérdez...
-
Sk8erPeter
nagyúr
Inkább én bocs, így utólag visszaolvasva kicsit túlzás, amit írtam, pedig eredetileg nem szántam ilyen oltósnak, csak kissé fáradt vagyok.
(3 óra alvás, kissé nehéz nap, ilyesmik. Sorry.
)
OK, látom már a problémát, lejjebb görgettem.
(Eddig csak megnéztem gyorsan a kezdőlapot, aztán lefostam.) Igazából ott kezdődik a probléma szerintem, hogy mindezt JavaScripttel akarod megoldani, ahogy martonx már utalt erre.
Sok megoldás van divek egyenlő magasságának megoldására:
http://www.hongkiat.com/blog/css-equal-height/ (nézd a demóját)
http://matthewjamestaylor.com/blog/equal-height-columns-cross-browser-css-no-hacks
http://css-tricks.com/fluid-width-equal-height-columns/ (+demo)
http://codepen.io/micahgodbolt/pen/FgqLcA jelenlegi megoldásban ez az a kód, ami nálad csinálja a dolgot, erre voltam korábban kíváncsi, de lusta voltam megnézni a forráskódot:
function equalHeight(group) {
tallest = 0;
group.each(function() {
thisHeight = $(this).height();
if(thisHeight > tallest) {
tallest = thisHeight;
}
});
group.height(tallest);
}
$(document).ready(function() {
equalHeight($(".mid"));
});Ha a .mid class-ra raksz egy overflow: auto; tulajdonságot, akkor működni fog a jelenlegi is. De akkor ott van a görgetősáv, feltételezem, azt nem akartad korábban, azért vetetted be többek közt ezt a kódot.
Hogy most itt a .height() miért ad vissza rossz magasságot, mármint konkrétan 580px-est a 694px körüli helyett, azt most nincs agyam felfogni.Amúgy a fölső menünél rohadt idegesítő, hogy bizonyos esetekben nem lehet eltalálni a menüpontot, pl. a Rólunk felirat föléviszem, és picit is máshova viszem a kurzort, mint az alsó sáv, akkor már rossz, "kiugrott" belőle. Erről a jelenségről az ennek a hsz.-nek a végén belinkelt cikkben olvashatsz: [link].
http://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdownSzerk.:
időközben megelőztek, ugyanazzal a linkkel, amit fentebb én is bedobtam, most láttam, hogy végül nem is küldtem el a hsz.-t, amikor megírtam, csak itthagytam a háttérben az egyik fülön, kész vagyok ma... -
Sk8erPeter
nagyúr
Hát majd remélem valakinek lesz kedve bogarászni, én biztos, hogy nem fogom keresni screenshot meg bármilyen kód nélkül, hol is kellene segíteni.
Ha segítséget kérsz, engedd meg nekünk, hogy lustábbak legyünk nálad egy fokkal.Ja, és erre: "Bocsánat, ha nem volt egyértelmű, nekem annak tűnt..."
Lehetőleg ne keltsd azt az érzetet, hogy még én vagyok a hülye, hogy nem vagyok hajlandó keresgélni, hogy mégis mi a frászt akarsz.Írd le, illusztráld, és akkor nincs ez a tök felesleges oda-vissza kérdezgetés. Kérdezni is tudni kell.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #3850 üzenetére
Szerintem a videódon is teljesen jól látszik az a minimális "röcögés" a slidernél, amiről beszéltem.
A hibaüzenetekkel kapcsolatban: igazából ilyenkor szerintem mindig csak az a pár (másod)percnyi Guglizás marad ki az életedből, amivel megkönnyítenéd a dolgodat.
"azt hittem valamiért egy illuminált pillanatomban, hogy nincsenek globális metódusok"
Hát gondold végig, hogy működhet. Ha include-olsz valamit, és az nincs körbeburkolva valamivel, ami "gátolja" az elérést, akkor annak a scope-jában eléred az adott függvényt/metódust (utóbbit az objektumon keresztül!)."amúgy JS-ben is metódusnak hívják magyarul a function-öket, vagy funkciónak? - Mondjuk a funkció szó szerintem ilyen kontextusban nagyon ronda"
Function = függvény (matematikai és programozási kontextusban mindig ezt jelenti, nem pedig "funkció"!!).
Ezek szerint ott vannak fogalmi zavaraid, hogy egyáltalán mi az a function (FÜGGVÉNY) és mi az a method (metódus). Azért ez is eléggé alapvető kérdés, érdemes kérdezés előtt ismét Guglizni.
Alapvetően eléggé hasonló fogalmat jelentenek, mind a függvény, mind a metódus kb. egy adott programkód egységbe zárt részlete, mindkettőnek lehet visszatérési értéke, mindkettőnek lehetnek paraméterei, de legalább egy igen fontos különbség van, hogy a metódusok mindig objektumokhoz kötődnek, tehát utóbbi fogalom elsősorban objektumorientált programozás kontextusában jön elő. Még egy fontos különbség, hogy a metódus eléri az adott objektum adatait (változók, egyéb metódusok, stb.; nyilván egyébként pl. öröklésnél csak azt, amihez van hozzáférése!), egy függvény nem biztos, hogy kívülről hozzáfér egy objektum adataihoz.Remélem, tiszta.
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz
don.racz #3842 üzenetére
Most hirtelen nem vágom az okát (bár nálam sem durva a szaggatás, igazából minimális), de gyorskérdés: mi az oka, hogy saját megoldást szeretnél használni, gyakorlás vagy valami egyéb?
Csak mert nagyon jó és alaposan tesztelt megoldások vannak ilyen sliderekre, igazából Dunát lehet velük rekeszteni, de vannak olyanok, amik valamilyen oknál fogva ismertebbek a többinél, például népszerű, mert jó a dokumentációja, sok effektje van, és hasonlók. Szóval hogyhogy nem ilyeneket használsz? Valószínűleg ott az akadások problémája elég jól meg van már oldva eleve.Egyébként lehet, hogy annyi az oka a minimális szaggatásnak, hogy a jQuery UI-ban nincs elég jól megoldva ez az effekt, végül is egyáltalán nem elképzelhetetlen.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #3843 üzenetére
Ha ilyen problémád van, lehetőleg megpróbálhatnád végre értelmesen leírni, milyen hibát tapasztalsz, milyen hibaüzeneteket kapsz, mert tök feleslegesek az ilyen oda-visszaírogatások, hogy aztán a végén kiderüljön, hogy igazából ezt az egészet kettő darab hsz.-ben is meg lehetett volna oldani. Tulajdonképpen most is csak ilyen odavetett félinfókat írogattál (fingunk sincs, hogyan van beállítva a projekted, meg hasonlók), úgyhogy a Visual Studiós problémádat sem tudjuk ennyiből megoldani.
(#3844) trisztan94 :
nézd meg jobban.Valamennyire észre lehet venni azt a szaggatást, amiről beszél, a monitorok tetejét ha megnézed, egy picit mintha ottmaradna, némi késéssel követi csupán.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #3840 üzenetére
Már miért ne tudnád elérni "sehogy"?
Szerinted például a jQuery függvényeit, Google Maps API metódusait hogyan éred el? Gondóóóókozzá'!Na jó, segítek: először include-olod ezek scriptfájljait, utána már tudod használni az abban globálisan elérhető változókat és függvényeket. Tehát ha "globális" függvényről van szó, simán eléred a másik fájlból.
Anonymous closure-ökkel*, és más módszerekkel persze lehet "priváttá" tenni a függvényeket, de úgy oldod meg, ahogy jólesik.
*: hasznos olvasnivaló:
http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html#anonymous_closures -
Sk8erPeter
nagyúr
válasz
Kozmonauta #3823 üzenetére
Elég sok különbség van köztük.
http://en.wikipedia.org/wiki/Java_(programming_language)
http://en.wikipedia.org/wiki/JavaScriptIde fáradj:
http://prohardver.hu/tema/java_topic/friss.html
DE előre mondom, hogy ennél azért értelmesebb információkat közölj az ottaniakkal is, mint hogy "nem akaródzik futni". Ennyiből sejtheted, hogy senki sem fogja tudni megmondani a problémád okát egyértelműen, max. lövöldözni lehet a vakvilágba eszetlenül. -
Sk8erPeter
nagyúr
válasz
raczger #3815 üzenetére
Itt vannak az eventek:
http://www.tinymce.com/wiki.php/api4:class.tinymce.EditorEbből szerintem ezt tudnád használni többek közt (legalábbis próbáld meg mindenképp):
http://www.tinymce.com/wiki.php/api4:event.tinymce.Editor.inittinymce.init({
...
setup: function(editor) {
editor.on('init', function(e) {
console.log('init event', e);
});
}
});Ez mondjuk AZUTÁN fut le, miután már az editor inicializálódott, de hátha így meg tudod oldani, mert elvileg akkor mindegyik külön editorra lefut ez az esemény - persze azt nem tudom, lesz-e így valami villanás az utólagos átméretezéstől, vagy sem.
szóval amikor az esemény bekövetkezik, akkor átállíthatnád a szélességét:
http://www.tinymce.com/wiki.php/api4:method.tinymce.ui.Control.widthGyakorlatban nem tudom, hogy néz ki, mert a 4-es TinyMCE-t még nem próbáltam, de én először ezzel próbálkoznék, aztán esetleg keresgélnék, van-e jobb módja, hátha írják vhol.
-
Sk8erPeter
nagyúr
válasz
raczger #3813 üzenetére
"csak hogyha több textarea is van ezzel a classal akkor ugyebár mindegyikre az elsőnek a méreteit lövi be"
Akkor adj egy újabb class-t az adott szövegmezőnek, amivel egyedibbé teszed, és akkor aszerint tudod lekérni az adatait...
pl.
<textarea class="tinymce valamiegyedi"></textarea>
a JS-kódban meg akkor már lehet $('textarea.tinymce.valamiegyedi').css('width') is -
Sk8erPeter
nagyúr
válasz
TomyLeeBoy #3806 üzenetére
De elég az is, ha a tényleges HTML-kimenetből akár csak 2-3 akármilyen sort kiszedsz, és jsFiddle-re rakod a lényegi JavaScript-kóddkal együtt, így kód nélkül nehéz segíteni.
-
Sk8erPeter
nagyúr
válasz
TomyLeeBoy #3804 üzenetére
Kérünk jsFiddle-példát, és akkor sokkal hatékonyabb a segítségadás.
-
Sk8erPeter
nagyúr
válasz
LógaGéza #3795 üzenetére
Ez a Dollar() függvény, meg annak felhasználási módja úgy, ahogy van, rossz, ne ilyenből próbáld megtanulni a JavaScriptet.
Nem tudom, honnan származik a függvény, de felejtős. Már eleve a neve félrevezető, nem is értem, honnan kapta.
Azt sem tudom, mire jó, hogy amennyiben 0 és 1 közötti számot adok be neki, akkor levágja az elejéről a 0-t, és marad a tizedespont utáni rész, aminél ráadásul be van drótozva a pont (nincs lehetőség ennek átadására), pedig ez országfüggő lehet, lásd mi például a tizedesvesszőt használjuk. De mivel itt "Dollar" a függvény neve, biztos úgy gondolták, ez helyénvaló lesz.
Az sincs lekezelve benne, mi van, ha negatív számot adok meg.
A lényeg nagyon röviden: ez a függvény mindössze két tizedesre kerekít, semmi mást nem csinál. Ha beadod neki, hogy 10, akkor csinál belőle 10.00-t. Ha úgy hívod meg, hogy mondjuk Dollar(10123.5678), akkor stringként visszaad neked "10123.57"-et. Igazából ennyi.Erre viszont ennél jóval értelmesebb, rövidebb és legfőképp JÓL MŰKÖDŐ megoldások is vannak, lásd:
http://stackoverflow.com/questions/11832914/round-up-to-2-decimal-places-in-javascriptElőző példával élve:
var myNumber = 10123.5678;
var fixedPointNumberAsAString = parseFloat(myNumber).toFixed(2);
// eredmény: "10123.57"VAGY:
var myNumber = 10123.5678;
var fixedPointNumber = Math.round(myNumber * 100) / 100;
// eredmény: 10123.57Utóbbi esetben számot fogsz kapni eredményül, nem pedig egy stringet.
-
Sk8erPeter
nagyúr
válasz
bazsika33 #3783 üzenetére
Tudod, mi volt a gond?
Ez:var zoomLevelAttr = map_canvas.getAttribute('data-map-zoom-level');
var zoomLevel = (zoomLevelAttr)? zoomLevelAttr : 13;így önmagában hibátlan, DE ezt a hibát írja:
"Uncaught InvalidValueError: invalid argument to setZoom: 3 "
Az oka pedig az, hogy a zoomLevel string típusú lesz, miközben számot vár...
Ezért javítani kell így:var zoomLevel = (zoomLevelAttr)? parseInt(zoomLevelAttr, 10) : 13;
így már integerré konvertálja.
A Google Maps tesztelésénél a Google Maps scriptfájljainak betöltési módja miatt a jsFiddle-nél problémák tapasztalhatók, úgyhogy felraktam JS Binre:
http://jsbin.com/EzeBUTe/2/editA custom tooltip itt sem működik, de azzal nem foglalkoztam. De mivel írtad, hogy rájöttél, mi a baja, úgyhogy megoszthatnád.
-
Sk8erPeter
nagyúr
válasz
bazsika33 #3781 üzenetére
Konkrétan mit buheráltál a Tooltipen, mivel bírtad működésre?
"Még egy kérdés: nem lehetne h a 'lat' 'lng' mellett a zoom mértékét is a html-ben lehessen állítani?"
Az előző után már nem kéne, hogy túl nagy trouvaille legyenA HTML eddig így nézett ki:
<div id="map_canvas" style="width:100%; height:400px" data-map-center-lat="47.507121" data-map-center-lng="19.045669"></div>
helyette legyen PÉLDÁUL ilyen (a data-attribútumokat teljesen tetszőlegesen találhatod ki, a "data-map-center-lng és hasonló neveket én adtam csak hasraütésre! Lehetett volna akár data-pityipalko is!):
<div id="map_canvas" style="width:100%; height:400px" data-map-center-lat="47.507121" data-map-center-lng="19.045669" data-map-zoom-level="15"></div>
A JS-kódba pedig kerüljön bele mondjuk ezután a sor után:
var center_lng = map_canvas.getAttribute('data-map-center-lng');
ez:
var zoomLevelAttr = map_canvas.getAttribute('data-map-zoom-level');
var zoomLevel = (zoomLevelAttr)? zoomLevelAttr : 13;aztán
var mapOptions = {
..........
zoom: zoomLevel,
..........
};hasonlóan bármilyen adatot bedrótozhatsz így a HTML-kódba, csak valami hasonló sémát kövess.
Szerk.:
Itt még egy pár percig percig próbálkoztam életre kelteni a Tooltipet, azzal játszottam, hogy definiáltam egy eseménykezelőt a térkép load eventjére, meg bemásoltam egy az egyben a Tooltip kódját, beraktam az inherit(Tooltip, google.maps.OverlayView); részt az initialize() függvénybe, aztán sikerült elcseszerinteni a dolgot, és végül most itt nem működik a térkép, és rohadtul nem volt most kedvem, agyam energiám folytatniDe mintát vehetsz, itt benne van már a zoom-beállítás, csak náám múúkodik: http://jsfiddle.net/kxQw8/7/
-
Sk8erPeter
nagyúr
válasz
bazsika33 #3777 üzenetére
Itt beírtam, hogy "Parlament, Budapest", vagy "Országház", vagy " 1055 Budapest, Kossuth Lajos tér 1-3.", vagy ahogy épp rátalálsz, aztán alul a "Click to see this area on Google Maps"-nél kattints (láthatod fölévitellel az URL-t):
https://maps.google.com/maps?ll=47.507121,19.045669&z=17&t=m&hl=en-US&mapclient=apiv3
(vagy az új Google Maps új URL-je szerint:
https://www.google.com/maps/preview#!data=!1m4!1m3!1d4716!2d19.045669!3d47.507121
)természetesen ll=47.507121,19.045669 az érdekes. Ez a felhasználandó koordináta.
Ez alapján nézd meg a kódot jól, felhasználtam a map divjénél a data-attribútumokat, és a JavaScript-kódban is ezzel babráltam:
http://jsfiddle.net/kxQw8/4/Konkrétan:
HTML:
<div id="map_canvas" style="width:100%; height:400px" data-map-center-lat="47.507121" data-map-center-lng="19.045669"></div>JS:
var map_canvas = document.getElementById("map_canvas");
var center_lat = map_canvas.getAttribute('data-map-center-lat');
var center_lng = map_canvas.getAttribute('data-map-center-lng');
// ...Szerk.:
még annyi, hogy az általad felhasznált Tooltipes kód nem tudom, honnan származik, de hiányos, mivel exceptionöket dobál nem létező metódusok felhasználása miatt.
Rákerestem, hátha meglelem a forrását, akkor ezt találtam:
http://stackoverflow.com/questions/19383522/google-maps-api-v3-multiple-tooltips-with-custom-content
Ezt Te kérdezted meg? -
Sk8erPeter
nagyúr
válasz
bazsika33 #3774 üzenetére
Így már működik a példád:
http://jsfiddle.net/kxQw8/2/
De igazából csak működőképessé tettem jsFiddle-ön, érdemben nem módosítottam rajta."Tehgát: minden egyes markerhez a saját html oldalán a marker centerjét szeretném beállítani. Tehát pl. a parlament html-en a parlament marker-je legyen a térképem központja."
Annyira nem jó ötlet, hogy minden egyes helyszínhez újabb és újabb HTML-fájlokat hozol létre, mondjuk a 30. helyszínnél már el fogsz gondolkozni rajta, hogy biztos nincs-e egyszerűbb megoldás. Query stringbe kellene belerakni a helyszínek neveit."A js-be meg kell adni egy centert és így minden html-ben jelenleg ugyanaz lesz a center (lánchíd) - még akkor is ha a centert a html-ben is megadom. Nekem ez a bajom...
[...]
Tehát azt szeretném h a centert a html-ben tudjam beállítani."
Hogy a "HTML-ben is megadom", meg a "HTML-ben tudjam beállítani", azt nem egészen értem, mivel itt is JavaScript-kódban adtad meg a kezdőkoordinátákat. Persze amúgy HTML-kódba is bepasszírozhatod a már említett data-* attribútumokkal (erre kell gondolni: http://html5doctor.com/html5-custom-data-attributes/), csak nem biztos, hogy érdemes.Több markert így tudsz értelmesen kezelni:
https://developers.google.com/maps/documentation/javascript/examples/icon-complexItt van egy Places API-val összekötött térképes kereső:
https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete
amint a találatra mész, középre rakja.Érdemes megnézni itt a demókat:
https://developers.google.com/maps/documentation/javascript/examples/A saját kódodban itt adtad meg a középponti koordinátákat:
var myLatlng = new google.maps.LatLng(47.506999, 19.045489);Ez itt van:
https://maps.google.com/maps?ll=47.499014,19.045299&z=13&t=m&hl=en-US&mapclient=apiv3
lásd az URL-ben ezt a részt: maps?ll=47.499014,19.045299
(tehát a query stringben ez a lényeg: ll=47.499014,19.045299
Tehát az eredmény azt mutatja, amit megadtál neki. -
Sk8erPeter
nagyúr
válasz
bazsika33 #3772 üzenetére
Mindezt rakd fel kérlek jsFiddle-re, hogy ne nekünk kelljen vele tökölnünk:
értelemszerűen mindenféle kódot a saját panelébe, HTML-t a HTML-hez, JavaScript-kódot a JavaScript-panelbe, CSS-kódot a CSS-panelbe, aztán mentsd el a Save-re kattintva, majd a kapott URL-t dobd be ide nekünk.
-
Sk8erPeter
nagyúr
"mivel ugye ha egy 16 tracket tartalmazó CD-t akarsz eladni, akkor szeretnéd, hogy mindegyik dalba bele lehessen hallgatni"
Ez egyáltalán nem indokolja, hogy duplaklikkelni kelljen.Szóval nem magyaráztál meg igazából ezzel még semmit.
Egy playlistnél miért kéne, hogy duplaklikkre működjön? Semmi logika abban, hogy első klikkre ki legyen választva a szám, második klikkre induljon el. Nem is így szoktak működni a lejátszók. A YouTube-on sem így működik. A jPlayer hivatalos oldalán sem így működik:
http://jplayer.org/latest/demo-02-video/
meg úgy általában nem így szokott működni.Mert totál logikátlan. EGY kattintásra ki kéne választania a számot, és elindítani.
Azt meg nem értem, hogy miért nem működik. Igazából debuggolni kellene, hogyan fut le a kód. Felrakhatnál egy jsFiddle-demót is róla, hogy ki tudjuk próbálni, külön működik-e. Működnie kéne elvileg, csak agyalni kéne rajta, most miért nem teszi, nekem sajna most nincs időm tesztelni...
Viszont a külön jsFiddle-demó gyorsíthatna a dolgon.
Viszont azt kéne kiderítened, hogy ez a duplaklikkelési kényszer HOL kerül beállításra, mert az fontos lehet.
-
Sk8erPeter
nagyúr
Na várj, eleve miért kell duplaklikkelni a sample-feliratra, hogy elinduljon a lejátszás?
"Double click on the title to start the sample"
Most nem volt kedvem keresgélni, hogy mitől függ, meg hol van ez beállítva, de ha eleve duplaklikkelni kell a lejátszáshoz, akkor a ready-n belül nem sima .click() kéne, hanem .dblclick().Tehát megpróbálhatnád első körben így:
ready: function () {
$(".demo-container .track-default").click();
},HELYETT:
ready: function () {
$(".demo-container .track-default").dblclick();
},Ergo ez duplaklikkelni fog, rögtön betöltődés után, nem sima klikkelni.
Meglátjuk, így jó-e.
Ha igen, akkor értelmesebb lenne eleve megszüntetni azt, hogy dupla klikkre működjön, mert az tök hülyeség.Most nem kotortam át a kódot, de megírhatnád, hogy azért mi felelős.
-
Sk8erPeter
nagyúr
"Viszont ahogy lentebb görgettem megláttam ott is ugyanazt a jplayer kódot, mint amit pastebin-re töltöttem fel a PHP fájlból.
Akkor lehet azt kellene inkább szerkesztgetni?"
B@szki...Hát ha ilyenek vannak, ne csodálkozz, hogy nem műxik a kód.
Nyilván szedd ki az egyiket, és ja, csak azt módosítsd, az legalább külön fájlban van.
Gondolom már így is bele kellett tákolnod vmelyik fájlba, szóval nem ront a helyzeten.
Na, lényeg, hogy csak egy helyen legyen minden ilyen kód, csak egy helyen szerkeszd, és akkor tovább tudunk lépni. Ergo az egész korábbit, amiről dumáltunk, szedd ki, ahogy van. Hagyd meg azt a kódot eredeti formájában, ami van az ajax.js-ben. Ha ez megvan, teszteld le, aztán szólj, mi a pálya. -
Sk8erPeter
nagyúr
Eleve nem értem, sablonban mit keres a jPlayer komplett kódja. Abszolút nem sminkelési feladat egy komplett lejátszó működésre bírása, kódjának beillesztése, ilyesmik. A sminkelés körébe az tartozik, hogy maga a jPlayer-lejátszó hogy nézzen ki. Nem maga a működési logika.
Szóval az egybecseszésről oké, hogy nem Te tehetsz, de attól még undormány marad.Na, de a parára visszatérve most hirtelen nem ugrik be, miért is nem működik, de javítsd már a JavaScriptes parákat előbb, például ezt, az ajax.js fájlodban:
//Add Event Listener to search form
$("#searchform").submit(function(e) {
location.hash = '?s=' + $("#s").val(return str.replace(/\s+/g, '%20'));
e.preventDefault();
});erre jelez hibát, joggal, mivel a zárójelben nyomatsz egy return-t, aminek semmi értelme.
Miután javítottuk a triviális hibákat, azután tudunk továbbmenni, minden ilyen nagy hiba számíthat. -
Sk8erPeter
nagyúr
"A CDATA zárót a Wordpress rontja el."
Így, hogy elrontja, legalább rávilágít, hogy nem jól csinálod
Külső JS-fájlba érdemes pakolni az ilyesmit, pluginnel behúzni, stb., nem tudom, mi ennek a szabályos módja WordPress-ben (már beszéltünk a Weblapkészítés topicban a plugin/modul/komponens készítésének előnyeiről a gányolás-tákolás-taknyolás kombó helyett), de az ilyen inline kód amúgy sem gyorsítótárazható a böngésző által, nehézkes karbantartani, és így tovább.Na, de lépjünk az érdemi részre, most látom, hogy eleve el van rontva a zárójelezés, érdemes ilyenkor para esetén megnyitni a konzolt Ctrl+Shift+I-vel vagy F12-vel, aztán rákattintani a Console fülre, láss csodát, para:
"Uncaught SyntaxError: Unexpected token (
(index):517"
ergo a kimenet 517. sorban van egy zárójelezési para, ha ezt megnézed a source-ban:if((opt_play_first && first_track)) || (opt_auto_play && !first_track)) {
my_jPlayer.jPlayer("play");
}itt a zárójel tök káoszos (ez mondjuk egy rendes IDE-ben vagy akár szövegszerkesztőben is látszik, ha a kurzort odateszed, IDE (pl. NetBeans, Eclipse, ilyesmik) még szól is érte), tehát cseréld erre:
if( (opt_play_first && first_track) || (opt_auto_play && !first_track) ) {
my_jPlayer.jPlayer("play");
}Amúgy ha parád van, és nincs tisztességes IDE kéznél, akkor sokat segít, ha bedobod ide a kódodat:
http://www.jshint.com/
ellát mindenféle tanácsokkal, hogy mit kéne javítanod a kódodon.Na, a lényeg, alakítsd vissza az eredetire a kódodat teljesen, javítsd ki ezt a zárójelezési parát, aztán jelezz, mire jutottál.
-
Sk8erPeter
nagyúr
Most egyben sikerült jól elcseszerintened a kódot valami módosítással
Pl.:
//]]>
</script>ehelyett ez kéne, hogy legyen:
//]]>
</script>(ami zárja a legvégén ezt: //<![CDATA[)
aztán ezt is elcseszerintetted:
$(".demo-container .track")ready: function() {
miért lett ebből ready, és akkor már miért nincs ott előtte egy pont?
Egyáltalán ezt minek változtattad?Szóval ezeket javítsd, mert így nehéz tesztelni.
-
Sk8erPeter
nagyúr
Na, akkor próbálkozzunk.
Van ez a rész:
ready: function () {
$(".demo-container .track-default").click();
},ezt cseréld le erre:
ready: function () {
// $(".demo-container .track-default").click();
$(this).jPlayer("setMedia", {
mp3: $('.demo-container .track:first-child').attr("href")
}).jPlayer("play"); // Attempt to auto play the media
},most ezt csak úgy gyorsan összekalapáltam, szóval nem garantálok semmit, amúgy is csak tesztelés erejéig kéne kipróbálni.
Szerk.:
persze a legjobb lenne élőben látni az oldalt... -
Sk8erPeter
nagyúr
válasz
martonx #3755 üzenetére
De elméletileg nagyon gyors rákukkantás alapján jónak kéne lennie a pastebines kód alapján, kiemelve a lényeget, közé pontokat téve:
var my_jPlayer = $("#jquery_jplayer"),
....
// Some options
var opt_play_first = true, // If true, will attempt to auto-play the default track on page loads. No effect on mobile devices, like iOS.
opt_auto_play = true, // If true, when a track is selected, it will auto-play.
opt_text_playing = "Now playing", // Text when playing
opt_text_selected = "Track selected"; // Text when not playing
....
// Instance jPlayer
my_jPlayer.jPlayer({
ready: function () {
$(".demo-container .track-default").click();
},
.....
});
$(".demo-container .track").click(function(e) {
...
my_jPlayer.jPlayer("setMedia", {
mp3: $(this).attr("href")
});
if((opt_play_first && first_track) || (opt_auto_play && !first_track)) {
my_jPlayer.jPlayer("play");
}
...
});Szerk.:
Ja, most, hogy egy kicsit gondolkodtam is, MIUTÁN leírtam mindezt
, rájöttem, hogy ebből f@szság is kisülhet:
$(".demo-container .track-default").click();
azt sem tudjuk, hány elemet tartalmaz ez a .track-default, bár feltételezem, csak egyet.
Na de a franc tudja, hogy ez egyáltalán elindítja-e valóban a lejátszást.
Habár el kéne neki, na jó, nekem ehhez most túlságosan péntek este van.
Új hozzászólás Aktív témák
- AKCIÓS áron eladó HP ZBOOK STUDIO G8 WORKSTATION! i7-11850H/32GB/RTX A2000/15,6"FHD/IPS/GARANCIA
- Asus TUF Dash F15 Gamer Laptop szép állapotban (RTX 3070, i7)
- Pioneer VSX-521-K + Jamo Sub 210
- YAMAHA RX-V6A 7.2 házimozi erősítő eladó
- Lenovo Ideacentre AIO 5 24ALC6 PC Ryzen 7 5700U 6 Mag 16GB RAM 512GB NVME SSD Gar.
- GYÖNYÖRŰ iPhone 13 mini 256GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3042, 94% Akkumulátor
- GYÖNYÖRŰ iPhone 15 Pro Max 256GB Black Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS3067
- Eladó szép állapotban levő Apple iPhone 8 256GB / 12 hó jótállással
- LG 27GP850P-B - 27" NANO IPS - 2560x1440 - 180Hz 1ms - NVIDIA G-Sync - AMD FreeSync - HDR 400
- LG 27GN800P - 27" IPS - 2560x1440 - 144 hz 1ms - NVIDIA G-Sync - AMD FreeSync - HDR 10
Állásajánlatok
Cég: FOTC
Város: Budapest