- Apple iPhone 16 Pro - rutinvizsga
- Samsung Galaxy A56 - megbízható középszerűség
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- One mobilszolgáltatások
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- VoLTE/VoWiFi
- Mobil flották
- Xiaomi 15 - kicsi telefon nagy energiával
- Google Pixel 8a - kis telefon kis késéssel
- Samsung Galaxy S25 - végre van kicsi!
-
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
válasz
SirRasor #3747 üzenetére
Csatlakozva Jim-Y gondolatához a Java ugyanúgy elképzelhető webes területen szerveroldali nyelvként, mint a PHP vagy ASP.NET, ergo lehet, hogy a cég azért várja el, hogy ilyen ismereteid legyenek, mert konkrétan webfejlesztésre fogod használni a Java nyelvet.
Amihez meg a HTML+CSS+JavaScript (+általában valamilyen library, pl. jQuery, mivel a keretrendszerek is sokszor használják ezeket) tudás természetesen elengedhetetlen. Erről persze neked kéne tudnod a pontosabb infókat.
Plusz csatlakozom az előttem szólókhoz, ne szinkron módon oldd meg a feladatodat, ha már AJAX volt a kérés (ami alapvetően aszinkron), meg amúgy sem, mert az elég kellemetlen, amikor egy hosszabb prüntyögés (kommunikáció a szerverrel oda-vissza) befagyasztja a GUI-t a böngészőben.
Az aszinkron megoldásnál az ún. callback-ek használata (ha nem használsz advanced-ebb megoldást, amiket Karma említett) leegyszerűsítve csak annyi, hogy megmondod előre, hogy majd ezt meg azt a függvényt hívd meg légy szíves, ha végeztél a feladatoddal. -
Sk8erPeter
nagyúr
válasz
SirRasor #3738 üzenetére
röviden:
window.location.replace('http://example.com/'); // http://example.com/ oldalra fog átirányítani...(OFF: hogy jön ide a Java?)
====
(#3739) SirRasor :
"Az okosok azt mondják, hogy szükség van szerver oldali ellenőrzésre is, mert CSAK."
A "CSAK"-nál értelmesebb magyarázat is létezik rá, hogy vajon miért van szükség szerveroldali ellenőrzésre JELSZÓVAL történő BEJELENTKEZÉS esetén, amit egy pici gondolkodással is kitalálhat az ember: szerinted az jó lenne, ha a jelszóellenőrzés kliensoldali, bárki által megtekinthető kódban történne?Ettől még ez nem zárja ki az AJAX-os bejelentkezést, szerveroldali ellenőrzést, majd lap-újrafrissítést (hogy elcseszett adatok esetén ne frissüljön újra a teljes lap, mert az csúfnak tűnhet), nem is igazán értem a problémádat, valószínűleg valami nagy félreértésben vagy.
-
Sk8erPeter
nagyúr
Itt van pár topic, ahol ezt jó alaposan kitárgyalják:
http://stackoverflow.com/questions/588004/is-javascripts-floating-point-math-broken
http://stackoverflow.com/questions/3556789/javascript-math-error-inexact-floats
http://stackoverflow.com/questions/5037839/avoiding-problems-with-javascripts-weird-decimal-calculations -
Sk8erPeter
nagyúr
"Offline fejlesztéshez egyébként én Bracketset szoktam használni."
Nem használtam még, milyen extrákat tud átlag szövegszerkesztőkhöz képest, ami miatt ezt használod? Csak mert ha van valami plusz pont, akkor szívesen tesztelgetem egy darabig. (Honlapra való gyors ránézésből nem derült ki, van-e valami extra, ami miatt adott célra mondjuk pl. a Sublime Textet kiválthatná.) -
Sk8erPeter
nagyúr
válasz
Teasüti #3719 üzenetére
Tegnap hajnalban valszeg jóval felháborodottabbnak tűnő hsz.-t sikerült írnom, mint amilyet akartam, vagy amilyet érdemes lett volna szánnom neked.
Egyrészt késő/korán volt, másrészt számomra furcsa ez az "arra nem akarok válaszolni"-stílus, én ha segítséget kérek, akkor minden hsz.-re reagálok, akár csak egy böffentés erejéig is, nem a saját fáradtságomra hivatkozom, hogy legalább a segítségnyújtó vágja, hogy igen, átjött az üzenet, nem ignoráltam. Nem hinném, hogy "programozói attitűd" a szabadidő hasznos eltöltésének igénye (amúgy ha már kérdezted, nem vagyok "full time programozó"), ennek az általánosító jellegű kifordítása ("mindig olyan nagyra vannak az idejükkel [...] És elefántot csinálnak a bolhából, a konvenciókból") pedig meglehetősen vicces (véleménynyilvánítás a magas lóról, miközben eddig az ellenkezője igazolódott be
), ha ez igaz lenne, akkor nem kaptál volna már annyi segítséget itt a fórumon olyan kérdésekre, amelyeknek te is utánanézhettél volna Google barátod segítségével. Sztem nem konvenció (főleg nem programozói) az, hogy válaszolok a segítségnyújtónak (nem csak magamról beszélek), ez egyszerűen netikett.
De igazad van, tényleg nem volt érdemes így reagálni, felesleges volt az egészet felhozni, egyszerűen mások vagyunk.
Tegnap ezt dobta a gép, sorry. Peace!
Hogy valami hasznosat is írjak, a Sublime Text egy igen jó kis szerkesztőprogi a viszonylag kis erőforrás-igényűek közül. Persze ments folyamatosan kódoláskor. (Általában én nem szeretem bekapcsolni, de van autosave funkciója is emlékeim szerint.)
(#3716) Karma :
jogos, a magyarázat fentebb. -
Sk8erPeter
nagyúr
válasz
Teasüti #3713 üzenetére
"Arra... nem akarok válaszolni. Fáradt voltam hozzá akkor, és most is."
Aha, elgondolkodtató, hogy akkor a jövőben mennyire fáradjunk mi a neked adott válaszokkal. Hidd el, nekünk is időbe kerül másoknak válaszokat írogatni, nekünk is van munkánk, tanulnivalónk, magánéletünk, azt a pár percet sem kell, hogy rád szánjuk, amit esetleg tudnánk. Könyörgöm, kissé fordítva ülsz a lovon. Te akarsz segítséget, de úgy csinálsz, mintha te tennél szívességet. Sosem értettem az ilyen hozzáállást a fórumokon. Mintha itt valami fizetett segítőgépek ülnének a gép előtt, és egész nap várnák a segítési lehetőséget. Hát nagyon nem."Tasker milyen program? Írtam róla egy cikket. De röviden szólva éppen ezt tudja, amit te is írtál."
Látom sikerült felfogni a kérdés lényegét.JavaScriptben programozol hozzá, ezzel kapcsolatban, meg a környezettel kérdeztem.
"És ha nem jsFiddle-szerű helyeken szokás dolgozni, akkor hol?
Ti ajánlottátok nekem, hogy erre való..."
Ne szívassál már... Szerinted mi hol mondtuk, hogy a jsFiddle munkára való?Segítek, sehol. Arra való, hogy prezentálj demókat másoknak, megosszatok kódokat, meg együtt lehessen segíteni a másiknak abban, hogy egy célfeladatot hogyan lehet megoldani. Van változatkezelője, jól működik, valóban van kódszépítési lehetőség, ezzel a másik munkáját könnyíted meg, adott esetben sajátodat is, ha nincs valami normális programozási környezeted épp, de bakker, nem arra való, hogy a napi munkádat ott végezd.
A JSBin egyébként elég gyakran ment, ha már...
Egyébként nem azt mondtad, hogy más nyelvekben már programoztál? Akkor eddig hogyan? -
Sk8erPeter
nagyúr
válasz
Teasüti #3711 üzenetére
Valószínűleg szopóálarc. Nem szokás ilyen helyen dolgozni.
Amúgy ha válaszolnak neked, illik reagálni.
-
Sk8erPeter
nagyúr
válasz
Teasüti #3706 üzenetére
"Nem irónia, tényleg így néz ki a kód."
Úristen, hát az kegyetlenül idétlen. Ez komoly, hogy így kódolsz? Még most szokj le erről, használj valami normális kódszerkesztőt, mert nem fogod átlátni a kódjaidat, most is átláthatatlan a bemásolt kód.
Tessék:
http://jsbeautifier.org/
Szépen indentálja a HTML- és főleg JS-kódokat is.
Ez alapján itt a kódod:
http://pastebin.com/zETLwnud
Kicsit másképp néz ki."[link] Itt is a result panelen van az eredmény."
Igen, de ne azt akard módosítani, hanem a kódot..."Ezt így ahogy van másoltam a HTML kóddal együtt, de nekem nem működött a pre.innerHTML sor (ugye az küldi a result-ra a kimenetet?)."
Nem az "küldi a resultra a kimenetet"... Kis félreértés van itt. A result egyszerűen csak a kód eredményét, kimenetét mutatja, ugyanúgy, mintha te összepakolnád az oldalt ezekből a különböző részekből, aztán megnyitnád a böngésződben, lefutna a kód, és kiadna valamilyen eredményt. Ugyanazt mutatja ez is.Van ez az elem a HTML-panelen:
<pre id="output">
Waiting...
</pre>Aztán van a JavaScript-panelen ez a rész:
var pre = document.getElementById('output');
ez itt egy globális változó lesz, az output id-val rendelkező elemet kérted le, tároltad a "pre" változóba. (mármint Karma tette ezt)
van aztán ez a sor:
pre.innerHTML = lat + ", " + lng;
ez egyszerűen annyit jelent, hogy módosítod a HTML-tartalmát a "pre" elemnek, ami az előbb látható output id-val rendelkező elem. Belerakod vesszővel elválasztva a "lat" és "lng" változók tartalmát. És kész.pre.innerHTML = textStatus;
Ez ugyanaz, csak itt a textStatus tartalmát pakolod bele (ez fog látszani a kimeneten is, mivel a "pre" egy látható elem, aminek a tartalma módosítva lett), ez az AJAX-kommunikáció során, hiba esetén meghívott callback-függvény, ez tehát annyit csinál, hogy egyszerűen megmutatja a válaszként kapott, hibaállapotról szóló szöveget a pre elemen belül."Nem hinném, hogy a mai 1+ ghz-es telefonoknak ez gondot okozhatna."
Tipikus rossz kódolási érv, a gányolások alkalmazásának alátámasztására. Ne így állj hozzá. És ha valaki nem 1+ GHz-es telefonnal nézi? Amúgy meg teljesen mindegy, mivel nézi, feleslegesen zabálni az erőforrásokat tök felesleges."function akármi(izé) {
var "ez meg az";
return("ez meg az");
}
var "ez meg az" = function(izé);
Na ez így jó vagy rossz?"
Ez most itt mi akart lenni?
Kérdésre válaszolva: nagyon rossz. Konkrétan semmi értelme. Nem is értem, itt mit akartál. var kulcsszó után egy string?
"Asszem ugyanez érvényes az Array.prototype-ra is, azt is a program elejébe illesztem be és nem tudom a benne hazsnált változók össze akadhatnak-e a program többi változójával."
var kulcsszót használsz, nem."Értsd: a function()-ben lévő változók "lokálisabbak-e", mint a programban lévők?
"
Ennek a kérdésnek semmi értelme.Az algoritmusról pedig már korábban beszélgettetek, azt annyira nem követtem végig, hogy hogyan kell ezt érteni, a tömböd rendezve van-e, meg minden részletet nem tudok.
Amúgy hogy működik ez a Tasker? Nem ismerem a progit, csak annyit tudok róla, hogy mindenféle feladatot végre lehet hajtani vele Androidon, ütemezést is, meg egyebeket lehet vele intézni, de hogy kódolni hogyan lehet hozzá, arról fogalmam sincs, sosem olvastam még róla, vagy néztem utána.
-
Sk8erPeter
nagyúr
válasz
Teasüti #3704 üzenetére
"Nem, nem "indentálok"."
Gondolom ez csak irónia volt.Ha a Prohardveren beszúrsz egy kódot, akkor jelöld ki, és kattints a "Programkód" gombra, ne pedig simán a Monospace-re. Akkor megmarad indentálva. Ezeket a dolgokat tényleg el kell magyarázni?
"Néztem a jsFiddle-t, de nem tudom használni (próbáltam átírni te példáidat is, de a result panelra nem tudok írni... más debug kiíratás sem ment.)."
Őőő, megvan, mi az a "result" szó, mit is jelent? Ne oda akarj írni, hanem pl. a HTML-, JS- vagy CSS-panelra...Nyilván a JavaScript-kódok a JavaScript-panelra mennek, remélem, ezt nem kell elmagyarázni, miért.
A jsFiddle-nél pedig a TidyUp gomb szolgálja azt a célt, hogy a kódod szebb legyen, mindegyik panelban szépíti."Próbáltam a böngésző konzolját is, de az se túl felhasználóbarát."
Miért is kellene, hogy felhasználóbarát legyen? Nem az a dolga."Inkább marad a natív környezet."
Milyen natív környezetről beszélsz?"Eddig még nem szúrtam el a zárójelezést egyszer sem.
"
Botrány. Ezek a mai fiatalok...Majd el fogod. Amúgy nem értem, ez a zárójelezős téma hogy jött ide, amikor Karma tanácsokat adott a tömbhasználathoz és az algoritmusodhoz...
Amúgy meglehetősen gány, amit csinálsz, ez az összefűzögetős valami (annyira nem próbáltam meg értelmezni). Nem tudom, most hány elemmel kísérletezel, de amikor mondjuk lesz 1000 név a telefonkönyvben, amiből szűrni kell az általad mutatott módon, akkor nem biztos, hogy azonnal végezni fog vele például egy gyengébb procival rendelkező teló...
"a meghívott function()-ökben deklarált változók ugye elszeparáltak a programtól?"
Ez így elég rossz megfogalmazás, lokális változóknak hívják, amikről beszélsz, var kulcsszóval kell deklarálni őket JavaScriptben. Ha nincs var kulcsszó, akkor felmerülhet a probléma, hogy az adott függvényben esetleg globális változót felülírsz vele, aminek pontosan ugyanez a neve, és elérhető az adott scope-ból. Ha referenciákra vagy kíváncsi, kapcsolódó téma:
http://stackoverflow.com/questions/7744611/pass-variables-by-reference-in-javascript/7744623#7744623
http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language
http://stackoverflow.com/questions/13104494/does-javascript-pass-by-reference
csak hogy ne nekem kelljen elmagyarázni.
Egyébként más esetben a függvényeid nem fognak tudni egymás lokális változóiról. -
Sk8erPeter
nagyúr
válasz
Teasüti #3698 üzenetére
Pont ezt akartam írni én is, hogy ennek úgy, ahogy van, ebben a formában semmi értelme. Tényleg leírhatnád, mi a célod.
(#3696) Teasüti :
biztos, hogy ezt az egészet JavaScripttel akarod elintézni, nem pedig valami adatbázissal, amiben még lehet is értelmesen keresgélni és tárolni (mivel például erre való)? -
Sk8erPeter
nagyúr
válasz
Teasüti #3693 üzenetére
RSS? És csodálkozol, hogy az nem JSON?
Olvasnivaló.
-
Sk8erPeter
nagyúr
válasz
Teasüti #3671 üzenetére
"Elég kevés a JSON, jellemzően eddig csak Google API-k esetén találkoztam vele."
Hogy érted azt, hogy "kevés a JSON"? Csak mert meglehetősen népszerű formátum, aminek lehet örülni."XML-t népszerűbbnek találom azok kevés webservice közt, amikhez szerencsém volt eddig."
Az XML valóban a legnépszerűbb volt ilyen tekintetben régen, mostanra ez már nem igaz. A JSON-formátum ma már meglehetősen elterjedt, például REST API-nál (is) nagyon jellemző.
Amúgy meg amiatt, hogy XML-lel többször találkoztál, miért szívatod magadat a nehézkesebb kezelésével, ha nem muszáj?Főleg, ha egyiknek a kezelését sem sajátítottad el még olyan szinten. Karmával már ketten is mutattunk példát rá, hogy jelen esetben mennyivel egyszerűbb dolgod lenne a JSON-formátum használatával.
Azt viszont jó ötletnek tartom, hogy először a plain JavaScripttel akarsz megismerkedni, és csak utána a jQuery-vel, hidd el, meg fog térülni, úgyhogy ebben bölcsen döntöttél.
Szerk.: most látom, hogy már kitárgyalták a többiek is az XML vs. JSON-témát, a későbbiek olvasása nélkül reagáltam egyből, sorry.
-
Sk8erPeter
nagyúr
válasz
Teasüti #3656 üzenetére
"És JSON formátumot is fel tudok dolgozni XML objektumként?"
Nem jó a kérdés, JSON-formátumot annak megfelelő formában is kell feldolgozni.Kell hozzá általában egy JSON.parse() (+[link]), lásd alább.
Nagy előnye, hogy nagyon kényelmes is feldolgozni (ha a natív JSON-támogatás adott (ha nem, akkor külső könyvtár vagy más megoldás kell))."megzavart, hogy én itt XMLHttp-vel dolgozom"
Nem csodálom, de ne zavarjon meg.Az előzőek alapján írtam neked egy nagyon egyszerű példakódot, nyisd meg a böngésződ fejlesztőpanelét (F12-vel), kattints a Console fülre, majd egyszerűen másold be ezt a kódot, és nyomj egy Entert, hogy lásd, mit csinál:
// https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started
var loc = "40.714224,-73.961452"; // csak példa
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
var responseText = httpRequest.responseText;
var responseTextInJSON = window.JSON.parse(httpRequest.responseText);
if(responseTextInJSON.status === "OK"){
var results = responseTextInJSON.results;
for(var i = 0; i<results.length; i++) {
var addr = results[i].formatted_address;
console.log("formatted address: ", addr);
// további eredmények...
}
}
else {
// valami gáz van, kezeld le a hibát
}
} else {
// para van
alert('There was a problem with the request.');
}
}
};
var url = "https://maps.googleapis.com/maps/api/geocode/xml?latlng="+loc+"&sensor=true";
// inkább JSON-formátum
url = "https://maps.googleapis.com/maps/api/geocode/json?latlng="+loc+"&sensor=true";
var isAsynchronous = true; // változtasd meg, attól függően, hogy aszinkron kérést szeretnél, vagy sem
httpRequest.open("GET", url, isAsynchronous);
httpRequest.send();Így elég egyszerűen fel lehetett dolgozni az eredményeket, amiket JSON-formátumban kaptál.
-
Sk8erPeter
nagyúr
válasz
Teasüti #3653 üzenetére
Huh, ez a split()-es megoldás nagyon rossz. Karma előttem már írta az XML-es megoldást, de ha van rá lehetőséged, használhatnád a JSON-ös megoldást is, én legalábbis mindenképp kellemesebbnek találom JavaScript-kódban ennek a használatát.
Példa, ha már a Google Maps volt a központi téma:
XML:
https://maps.googleapis.com/maps/api/geocode/xml?latlng=40.714224,-73.961452&sensor=true
JSON:
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true(az URL-ben csak az "xml" részt kellett "json"-re változtatni)
-
Sk8erPeter
nagyúr
válasz
Teasüti #3651 üzenetére
Na, ennek örülök, szívesen!
============================
"Eddig így csináltam: loadApp('Viber','',false) ahol egy üres string-et írtam a középső paraméterbe.
Próbáltam e módon is: loadApp('Viber',false) de ez nem működött. Úgy tűnik nem lehet csak úgy kihagyni egy köztes paramétert."
Az első változat a jó ebben az esetben. Vagy másik lehetőség az undefined-ot átadni: loadApp('Viber', undefined, false)
Lehetnek default paramétereid is, minimális trükközéssel, csak példakóddal:function loadApp(label, data, blabla) {
// ..........................
if(data === "" | data === undefined) {
data = "hello";
}
if(typeof blabla !== "boolean") {
blabla = false;
}
// ..........................
// ..........................
}Ekkor meghívhatod így: loadApp('Viber');, és ekkor a data változó egyenlő lesz a "hello" stringgel, a blabla változó pedig false-szal.
Persze ez csak példa.
Aztán játszhatsz még ilyenekkel is, mint például a PHP-s empty() függvény JS-be átültetett változata, és azzal is csekkolhatod egy változó értékét:
http://phpjs.org/functions/empty/
és ha valamelyik változó üres, akkor adsz neki egy alapértelmezett értéket, mint az előbbi példa. -
Sk8erPeter
nagyúr
válasz
Teasüti #3649 üzenetére
Most látom csak, eddig elkerülte a figyelmem, hogy a protokollt a cím elé nem írtad oda, ez gondot okozhat, tehát ezt:
http.open("GET","maps.googleapis.com/maps/api/geocode/xml?latlng="+loc+"&sensor=true", false);cseréld le erre:
http.open("GET","https://maps.googleapis.com/maps/api/geocode/xml?latlng="+loc+"&sensor=true", false);Annyit változtattam, hogy eléraktam a "https://" részt.
Amúgy ez a "http" változónév nem túl szerencsés sztem. Akkor már "httpRequest" vagy ilyesmi, amit használnak pl. MDN-en is, kifejezőbb kicsit. Bár nem kardinális kérdés.
Tehát akkor összességében valami ilyesmi legyen a kódod (próbáld ki, ez megy-e):
var loc = "40.714224,-73.961452"; // csak példa
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
flash("readyState: "+httpRequest.readyState);
flash("status: "+httpRequest.status);
};
var url = "https://maps.googleapis.com/maps/api/geocode/xml?latlng="+loc+"&sensor=true";
var isAsynchronous = true; // változtasd meg, attól függően, hogy aszinkron kérést szeretnél, vagy sem
httpRequest.open("GET", url, isAsynchronous);
httpRequest.send();==================================
"Mi a helyzet akkor, ha kevesebb paramétert akarok átadni egy függvénynek, mint amennyi definiálva van?"
JavaScriptben ez működőképes, ez esetben a függvény paraméterei egyszerűen definiálatlanok maradnak, tehát undefined "értékük" lesz.Böngészőben ezt nagyon egyszerűen tudod csekkolni, nyisd meg az adott böngésző fejlesztőpanelét (ált. F12), kattints a Console feliratra, majd simán másold be ezt a kis kódot, és próbálgasd (az általad mutatott példával):
function hello(var1, var2) {
console.log('var1', var1);
console.log('var2', var2);
}
var blabla = 42;
hello(blabla);Ez esetben var1 értéke 42 lesz, var2 értéke undefined.
Ha úgy hívod meg a függvényt, hogy nem adsz át paramétert (így: hello();), akkor mindkét paraméter (var1, var2) értéke undefined. -
Sk8erPeter
nagyúr
válasz
Teasüti #3647 üzenetére
http.open("GET","maps.googleapis.com/maps/api/geocode/xml?latlng=loc&sensor=true", false);
Azontúl, amit wis javasolt, még egy igen nagy hiba van a kódodban így első ránézésre, konkrétan az idemásolt részletben: a "loc" nevű változó értéke nem helyettesítődik be, mivel nem konkatenálod, tehát így kéne átírnod a fenti sort:
http.open("GET","maps.googleapis.com/maps/api/geocode/xml?latlng="+loc+"&sensor=true", false);
Mint látható, itt már hozzáfűződik a "loc" változó értéke.
-
Sk8erPeter
nagyúr
"2: az input tageket nem zártad le normálisan."
Én is le szoktam zárni, hozzá vagyok szokva az XHTML-szintaktikához, de egyébként HTML4-ben és HTML5-ben sem okoz validitási problémát ennek hiánya."3: a htmlben lévő onClick kerülendő, hivatalosan? is deprecated, vagyis elavult."
Miért lenne már az onclick attribútum hivatalosan is deprecated?
Egyébként valóban kerülendő, az igaz, de ettől még nem deprecated.
Ami viszont deprecated, az a script tagben használt language="JavaScript", amit már ötezer éve nem használnak. Remélem, azon az ún. "webmester képzésen" nem ezt nyomatják, ha igen, akkor máris árulkodó, hogy mennyire szart sem ér..."4: a teszt függvényed két paraméteres, te pedig egy paramétert adsz át neki, így meg sem hívódik."
Hogy micsoda?!
1. a meghívás: teszt(mezo.value,numerikus.num) - mint látható, két paramétert ad át
2. attól még, mert akár 0 paramétert ad át egy 2 paramétert "váró" függvénynek, már miért ne hívódna meg?Ez azért csúnya volt.
Ez JavaScript.Egyébként ez a teszt() függvény nem sokra jó, ez csupán ellenőrzi, hogy az egyik szóban lévő karakterek előfordulnak-e a másikban; például a teszt('teniszütő', 'teniszütőségesség') és a teszt('teniszütő', 'tsesnsissszsüstsős') is true-t fog eredményül adni, míg a teszt('teniszütő', 'tenisz') például nem (false).
"6: úgy használod a ciklusokat és elágazásokat mintha lambda kifejezések lennének"
Nem láttam ilyeneket, ezt mire értetted?Muszáj volt ezeket korrigálni, sorry, hogy épp a Te hsz.-ed esett ennek áldozatul, de az állítólagos webmester képzésen (!!) részt vevő illető mindezt már kész tényként ve(he)tte...
-
Sk8erPeter
nagyúr
Gondolom azt akarja szemléltetni, hogy visszaadhatod így is, aminek következtében metódusokat hívogathatsz, amiben lehet valami más logika is, nem csak egy értéket visszaadsz, és kész, hanem mondjuk a feladathoz szükséges dolgokat elvégzed a metódusban. De most igazából pont te mutattál egy esetet, ahol kiderül, miben tud más lenni a kettő.
Hozzáteszem, számomra ez ilyen formában jóval olvashatóbb:
function Bar() {
var value = 1;
this.increase = function() {
value = value + 1;
};
this.getValue = function(){
return value;
};
}
var bar = new Bar();
bar.increase();
var value = bar.getValue();
console.log('value', value); -
Sk8erPeter
nagyúr
"Mindennel" biztos nem, mert akkor már megoldódott volna.
Továbbra is csak linkeket tudok dobálni:
http://eternalblackzero.blogspot.hu/2008/12/typeerror-windowcontentisnull-error.html
http://stackoverflow.com/questions/12267903/firefox-typeerror-localstorage-is-null/12269453#12269453
https://groups.google.com/forum/#!topic/mozilla.dev.extensions/iIrQXyMIhOU
(http://stackoverflow.com/questions/13636268/why-can-not-the-browser-url-be-gotten-from-a-dialog-window-firefox)
https://code.google.com/p/dactyl/issues/detail?id=148
http://comments.gmane.org/gmane.comp.mozilla.firefox.vimperator/4275
http://kasperowski.com/2008/12/firefox-tabs-broken.html
stb.Firefox-verziód?
-
Sk8erPeter
nagyúr
"Sajnos xpi-t nem tudok debug-olni"
https://blog.mozilla.org/addons/2009/01/28/how-to-develop-a-firefox-extension/
http://davidthomasbernal.com/blog/2011/04/09/debugging-firefox-extensions-the-easy-way/
http://stackoverflow.com/questions/1077719/fastest-way-to-debug-firefox-addons-during-development
http://stackoverflow.com/questions/6855359/how-to-debug-firefox-extension
http://stackoverflow.com/questions/9464545/debugging-firefox-extension-from-add-on-builder
http://stackoverflow.com/questions/6239118/how-can-i-debug-a-firefox-extension-with-firebug
http://stackoverflow.com/questions/11128454/debugging-javascript-in-firefox-add-on -
Sk8erPeter
nagyúr
Firefox add-on fejlesztgetésével még nem foglalkoztam, de mivel ez az elfogadott, és upvote-olt válasz, feltételezem, hogy működnie kellene a bővítményben is.
Egyáltalán mit ír ki neked, milyen problémát tapasztalsz? Nem volt túl bőbeszédű a hibaleírásod, mert nagyjából annyit írtál, hogy "nem működik". Debuggoltad (pl. Firebug)? Mivel próbálkoztál? Mi történt?(#3617) martonx :
azt írta, simán, böngészőben kipróbálgatva működőképes megoldást talált, csak FF-bővítmény formájában "nem működik" (az okát nem írta).
Amúgy localStorage kell neki, nem sessionStorage, de a kezelése végül is ugyanaz. -
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Ennek a pluginnek köze nincs a szerver felé történő adatküldéshez. Ez csak feldob egy modális ablakot. Mint a jQuery UI Dialog, aminek egyébként kissé bőségesebb a dokumentációja.
A form submit eseménykezelésébe, vagy legalább a submit gomb click eseménykezelőjére kellene kötni az adatküldést a szerver felé. -
Sk8erPeter
nagyúr
válasz
martonx #3592 üzenetére
"Ahogy a képernyő mentéseden is látható, te egy NodeList objektumot kaptál válaszul. Ez nem igazi tömb, nem tudsz belől kimondottan indexelve elemet lekérni."
Hogy micsoda? Már hogyne lehetne indexelve végigmenni rajta?
https://developer.mozilla.org/en-US/docs/Web/API/NodeList
itt is mutatják egy példában, hogy pontosan ugyanúgy lehet végigmenni rajta, ahogy egy akármilyen tömbön.It's possible to loop over the items in a NodeList using:
for (var i = 0; i < myNodeList.length; ++i) {
var item = myNodeList[i]; // Calling myNodeList.item(i) isn't necessary in JavaScript
} -
Sk8erPeter
nagyúr
válasz
fordfairlane #3584 üzenetére
Most komolyan, mi szükség volt erre a stílusra? Mondtam én neked bármi rosszat? Kitűzted magadnak célul, hogy most aztán belémkötsz, vagy mi a célod? Ne aggódj, eddig csak saját magadat hergelted be igazából teljesen feleslegesen (bár inkább meglepő módon), de ez nem épp arra utal, hogy ne vetted volna magadra a korábbiakat (de ne haragudj, valahogy nincs kedvem ehhez a "nem is, hanem te!!"-jellegű elkezdett óvodastílushoz).
Mindenesetre tényleg nem értem, mi bajod van, min húztad fel magad, bár gondolom épp szar kedved volt/van, és engem találtál be. -
Sk8erPeter
nagyúr
válasz
martonx #3579 üzenetére
Ez teljesen így van. Igazából nem is annyira a JavaScript általános fikázása volt a célom, hanem inkább hogy más is tudjon ezekről a buta típuskonverziókról.
Egy JavaScript-újítás sok szempontból hasznos lenne, ahogy mi már beszéltünk is róla, hogy kevésbé legyen szükség kiegészítő librarykre a kódolás idegesítően ismétlődő feladatainak megoldására plain JavaScriptben, és több dolog legyen natívan megoldható. Az esély viszont arra, hogy pár éven belül erre át lehetne állni, jelenleg nem sok (lásd ahogy az IE korábbi verzióinak kiirtása is nagyon sok évig elhúzódó folyamat). -
Sk8erPeter
nagyúr
válasz
fordfairlane #3581 üzenetére
Annak, hogy belinkeltem, a lényege nem az volt, hogy mennyire "vicceske", vagy sem, meg hogy a forma milyen figurákat mutogat, hogy feldobja az előadását, hanem az, hogy milyen degenerált típuskonverziók történnek JavaScriptben, és ezen senki ne lepődjön meg, ha ilyennel találkozik kódolás során. A mondanivalója pedig pontosan ez volt (ergo volt mondanivalója).
Amúgy nem kell ám magadra venni, mintha személyes sértést mondtak volna neked, hogy a JavaScriptben elég meglepő az, hogy []+[] = empty string, vagy hogy {}+{} = NaN; vagy ez így tök oké?"Tudom, hogy az ún. komoly programozokóknak ez vörös posztó, de hát ez legyen az ő bajuk."
Ezzel nem tudom, kire céloztál, meg hogy miért sértődtél meg ennyire ezen a videónde nem tudom, miért lenne probléma az, hogy mindezt a típuskonverziós problémát valaki bemutatja. Ha van ilyen probléma, és adott esetben meglepetéseket okozhat, akkor inkább söpörjük szőnyeg alá, és ne beszéljünk róla?
-
Sk8erPeter
nagyúr
Gondolom páran már láttátok, de most megint megnéztem, és röhögtem egy sort az általunk használt nyelven
Azért sokszor a JavaScript is a vicc kategória tud lenni.
-
Sk8erPeter
nagyúr
Jim-Y jókat írt.
Igazából a kérdésedet sem értem, épp előtted kérdeztek egy Google Maps API-val kapcsolatos dolgot, például a megoldásban szereplő InfoWindow-s módszert a tetszőleges tartalmú buborékkal légy szíves mutasd meg nekem, hogyan csinálnád meg a helyszín kikeresésével, majd a szokásos megosztólinkkel a maps.google.com-on, én is kíváncsi lennék... -
Sk8erPeter
nagyúr
válasz
Hege1234 #3568 üzenetére
Igazából majdnem elkezdtem magyarázószöveget írni a dokumentációk olvasásának fontosságáról, szépségéről, a Google Maps működéséről, aztán rájöttem, hogy copy-paste-tel, majd minimális módosítással a feladatod konkrétan 4 perc alatt megoldható, úgyhogy inkább nem írogattam, tessék, először is, ahonnan copy-ztam a kódot:
https://developers.google.com/maps/documentation/javascript/examples/infowindow-simple
ezt úgy találtam meg, hogy beírtam Google-be, hogy "Google Maps API InfoWindow"
Aztán utána megnyitottam a jsbint, bedobtam a CSS-kódodat, meg a belinkelt oldalról a JS-kódot, és átírtam a koordinátádnak megfelelően, meg a szöveget módosítottam, zoomot gyorsan átállítottam, aztán kész:
-
Sk8erPeter
nagyúr
Hát ez csak akkor kell, ha a többi tartalmat AJAX-szal tölti be. Feltételezem, nem ez a helyzet, ha nem vágja a JavaScriptet, úgyhogy ez lehet, h tárgytalan.
http://www.openjs.com/scripts/dom/class_manipulation.php
itt van egy nagyon egyszerű addClass, removeClass, hasClass implementáció. Nem tanulmányoztam az esetleges bugjait, de nekem eddig bevált, ha plain JS-ben kellett ilyesmi.function hasClass(ele, cls) {
return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
function addClass(ele, cls) {
if (!this.hasClass(ele, cls)) ele.className += " " + cls;
}
function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className = ele.className.replace(reg, ' ');
}
}ez alapján nem túl szép gyorsmegoldással ugyanaz:
de mondom, mindez valszeg most úgysem érdekes, legfeljebb egymás közt
-
Sk8erPeter
nagyúr
Ez sztem inkább szerveroldali feladat, belegenerálsz az aktív menüpontba pl. egy "active" class-t, és azt mindig nyitva tartod. Vagy most nézem, a kódodban ez a "current". Az is jó.
De mondjuk ennek nem sok köze van a JavaScripthez, mivel itt a kódodban is szimplán csak HTML+CSS-kombóval oldottad meg.Pl. most egy sort JavaScript-kódot nem raktam hozzá, csupán az Akciók <li>-be beleraktam egy class="current"-et a kódod mintájára, aztán a CSS-kódhoz összesen két sort tettem hozzá, és kész is voltam vele, így az Akciók menüpont mindig nyitva van:
http://jsfiddle.net/96Bu8/11/
Egész konkrétan azt tettem hozzá újonnan, amihez kommentbe odaírtam, hogy /* ÚJ */.Ilyenre gondoltál?
A feladat tehát annyi, hogy szerveroldalon mindig az aktuális <li>-be belegenerálsz (akár sima if-else-ekkel) egy current class-t, ahogy itt is mutattam. Nyilván megoldható egyébként JavaScripttel is, de alapvetően szerveroldali feladatot minek rábízni a kliensre. Persze ha nagyon muszáj megoldani JS-ben, akkor tudunk segíteni benne.
-
Sk8erPeter
nagyúr
válasz
#36268800 #3557 üzenetére
Ha 2002-es, akkor bőven tartalmazhat elavult dolgokat, úgyhogy inkább valami frissebb könyvre/e-bookra/egyébre hagyatkoznék. Ebből a 24 órás valamiből is tuti van frissebb, biztos nem árt, ha átnézed, egyébként műszaki jellegű könyvtárban is kapható (ha valamelyik főiskolába/egyetemre jársz, akkor érdemes ott körülnézni), elég drágák ezek a könyvek, úgyhogy ha nem akarsz kiadni annyit, akkor inkább könyvtárból vedd ki. Aztán persze nagyon jó online tutorialok is vannak. Az MDN oldalát tényleg érdemes nézegetni.
-
Sk8erPeter
nagyúr
válasz
nymarti #3550 üzenetére
"van valami tippetek, hogy mit ronthattam el?"
Hát elég sok mindent.
- nem raktad fel a kódodat jsFiddle-re, hogy könnyebben és gyorsabban tudjuk debuggolni
- kezdjük ott, hogy a select15() és a magas() nem túl beszédes nevek, egy év múlva esélyes, hogy fogalmad sem lesz róla a kód megnézése nélkül, hogy az a két függvény mit csinál. Kerülendő. Inkább legyenek jó hosszú változó- és függvény-/metódusneveid, mint hogy később nehézkes legyen rájönni, mi a feladatuk (ahogy az a,b,c,s, x,y,z és hasonló nevek is kerülendők).
- onChange="magas();" --> ezzel tehát azt mondtad, hogy a select listából való válogatás során, ha történik bármi változás, akkor a magas() függvény hívódjon meg; a select15() egyáltalán nem hívódik meg, szóval azt hiába is várod.
- nem tudjuk, mi van a magas() függvényedben, de a disabled-re állítás amúgy sem történik meg, mivel a select15() nem hívódik meg
- mi a frász az az s[16]?Egyáltalán hol van itt az az s tömb? Mondjuk feltételezem, azt gondoltad, hogy így eléred a következő select elemet, aminek sel16 az id-je, de így nem fog menni. Vannak ilyenek, mint a document.getElementById, nextElementSibling, children, és így tovább.
- na, egyelőre elég infó. -
Sk8erPeter
nagyúr
válasz
ahetaton #3546 üzenetére
Javaslom, hogy kezdd el túrni az internetet "JavaScript validation" kulcsszavakra keresve, hidd el, előbb-utóbb rá fogsz jönni, hogy kell megoldani a feladatot. Itt senki nem szeret ingyen dolgozni, tanácsokat szívesen adunk, segítünk is a konkrét kódban, de legalább a minimális erőfeszítést lehetne látni a kódodban... amúgy remélem tudod, hogy a szerveroldali validálás az elsődleges (akár PHP-ben dolgozol, akár ASP.NET-ben, akár Javában, tök mindegy), a kliensoldali csak ezután következik (az mindig másodlagos).
-
Sk8erPeter
nagyúr
Eléggé úgy tűnik, a jsFiddle-nél kúrtak el valamit, konkrétan az embeddable.js-ben a switchTab metódus meghívásakor történik a hiba, szóval pont, amikor váltasz:
Unhandled Error: Cannot convert 'this.sections[index]' to object
Első megoldás hibajelzés a jsFiddle GitHub-oldalán.
-
Sk8erPeter
nagyúr
válasz
martonx #3540 üzenetére
Nem is beszélve arról, hogy mennyire okádék, amikor valaki egy sorba bedob tisztességesen kinéző kódnál 5 sort igénylő kódot.
Mondjuk az se semmi, amikor valaki külön JS-fájlban elkezd trükközni, hogy megspóroljon 3 sornyi kódot, és csinál belőle a nyelv lehetőségeit kihasználva 1 minikódsort, amivel igazából csak azt éri el, hogy bebizonyította magának, milyen ügyes volt, de aztán amikor 2 hét múlva ránéz a kódjára, akkor ő maga is elgondolkozik, hogy ott mit is csinált.
(Bár ez nyelveken átívelő dolog.)
(#3541) fordfairlane :
"Az ilyen "separation of concerns" megközelítések akkor számítanak, ha a szoftver bonyolultsága meghalad egy szintet."
Igazából a lehető legegyszerűbb kódnál is számít, nem kell ehhez bonyolult webalkalmazást elképzelni, elég az iménti kérdező kódjára gondolni, már ott is ronda. -
Sk8erPeter
nagyúr
Milyen "hivatalos irományt"?
Konkrétan kitől várnád ezt az irományt?
Kismillió ezzel kapcsolatos cikk, slide, egyéb van, ami összefoglalja, hogy a szemantikai keveredések miért rosszak MINDIG. Egyszerűen karbantarthatatlanná, tesztelhetetlenné és átláthatatlanná teszi egy idő után a kódot, nem beszélve arról, hogy mennyire ocsmány.
Egyébként a template-ezést sem véletlenül találták ki.De mutatok neked konkrétumot, ezt a slide-ot még régebben olvastam, könyvjelzőztem is, mert nagyon szemléletes, mindenképp fusd át, röviden, tömören, érthetően mutatja be leegyszerűsített példákkal, mit kerülj el
http://www.slideshare.net/fgalassi/refactoring-to-unobtrusive-javascript -
Sk8erPeter
nagyúr
válasz
ahetaton #3534 üzenetére
A getStyle() nem túl jó név, mivel itt konkrétan a visibility tulajdonságot kéred le, tehát szerencsésebb lenne akkor már a getVisibility() elnevezés...
JavaScript-kódba beégetett CSS-módosításokat nem érdemes használni, inkább hozzáadni és elvenni osztályokat, amik kinézetét CSS-ben határozod meg.
Pl. legyen egy .hidden osztályod, ami a display:none tulajdonságot állítja be. Ezt hozzáadod vagy elveszed.Így:
http://jsfiddle.net/pXRfT/Látom, megelőztek.
Felejtsétek el az inline, HTML-kódokkal összekutyult ocsmány JavaScript-kódokat!! -
Sk8erPeter
nagyúr
válasz
ferensz #3527 üzenetére
Na, sorry, csak most tudtam megnézni a kódodat rendesen.
Végre egy érdekes kérdés!a következőket érdemes használni:
- CSS class-ok a JavaScript-kódba beégetett stílusváltoztatások helyett, tehát osztályok hozzáadása, elvétele, a jQuery-s addClass, removeClass, hasClass plain JS-ben történő megvalósításával, amire itt van code snippet:
http://www.openjs.com/scripts/dom/class_manipulation.php
- ha alapból van mondjuk egy list-collapsed osztály az összecsukott listán, ami display:none-ra állítja azt, és van külön egy list-expanded osztályod, ami pedig display:block-ra állítja, és ebben a sorrendben következik a CSS-kódban is egymás után, akkor elég csak hozzáadnod, illetve elvenned a list-expanded osztályt, de mondjuk ez nem teljesen foolproof megoldás (más is módosíthatja az osztályok sorrendjét, láthatóságát), ezért érdemes mindig elvenni a list-expanded osztályt, ha össze akarod csukni, és hozzáadni a list-collapsed osztályt (ez így nem olyan szép a kódban, mert egymás után van, meg plusz függvényhívások, de azért nem katasztrófa)
- event.preventDefault, hogy a # hreffel egyenlő linkeket ne akarja követni a böngésző (ne ugorjon a lap tetejére)
- event.stopPropagation, hogy megakadályozd az esemény felszivárgását (bubbling up) a DOM-fában (pl. a valós linkre kattintva nem kell lenyílnia a listának)Ez alapján módosítottam a kódodat:
http://jsfiddle.net/Sk8erPeter/a63q7/Remélem, így már sikerül, kommenteztem a kódot, ha valami mégsem teljesen világos benne, kérdezz vissza nyugodtan.
-
Sk8erPeter
nagyúr
Igen, és deprecated, ahogy volt már róla szó a topicban.
Lásd jQuery hivatalos oldala.
Nem jó, nagyon nem az. Ne fagyasszuk be a júzer GUI-ját azért, mert nem jöttünk rá a jó megoldásra.(#3522) martonx :
én is így látom. Egy "kicsit" értelmesebb, mint a múltkori "valósítsunk meg komplett webshopot CSAK JavaScript-alapokon"-feladat... így legalább a diákok talán elkezdik érteni, mit jelent az, hogy aszinkron kommunikáció.(#3519) Lacces :
nem volt egy túl nagy vitatéma, a lényeg, hogy senki ne AJAX-ozzon úgy, hogy szinkron kommunikációt erőltet. Mert az rossz. -
Sk8erPeter
nagyúr
válasz
martonx #3505 üzenetére
"Plusz a namespace-be szervezés, amúgy is hasznos dolog, összetettebb javascript-es oldalnál."
Persze, ez alap. Ez akkor is jól jön, ha valaki valamilyen oknál fogva több library-t is szeretne használni, ami ugyanazt a változónevet használja - lásd például jQuery és MooTools egy oldalon (bár ha ilyenre sor kerül, akkor a fejlesztőkkel van a gond, de kényszerhelyzetben előkerülhet), de lehetne más példát is mondani. -
Sk8erPeter
nagyúr
válasz
martonx #3502 üzenetére
Nesze:
http://jsfiddle.net/Sk8erPeter/b5sxk/1/Mondjuk ez a spórolás csak fejlesztés közben érdekes, nem betöltéskor.
Félreértések elkerülése érdekében nem fél órát tököltem vele, csak közben kétmillió topicot megnéztem, meg hatmillió e-mailt, aztán eszembe jutott, hogy miért is ne.
-
Sk8erPeter
nagyúr
Jaja, ez jó workaround, igazából annyi a trükk, hogy setIntervallal 25 milliszekundumonként rajzoltatja újra a képet, és 5 egységgel mozgatja a négyzetet ide-oda a kurzorgombok lenyomására.
De figyelj azokra a dolgokra, amiket martonx említett.(#3500) martonx :
jaja, ez tényleg gáz, sajnos sokszor a fejlesztők nem figyelnek oda a felesleges overheadre, ami így kicsiben lehet, hogy nem érzékelhető, de eleve igénytelenül programozni elég gáz.
Meg a cikk mondanivalója nem kicsit félrevezető ezzel az "Until I realized I could just use jQuery." mondattal, amikor ezek a dolgok jQuery nélkül is különösebb macera nélkül megoldhatóak, legalábbis nem itt jön ki a jQuery előnye, az is biztos. Igazából mi az, ami itt rövidíti a kódot? Legfeljebb az eseménykezelés rövidebb egy picit, meg nem írt document.getElementById('canvas')-t, ami valóban hosszabb, mint a $('#canvas'), de nagyjából itt meg is áll a dolog... a többi ergo pontosan ugyanannyiból összehozható plain JS segítségével.De hogy ne csak a szám járjon, itt van az egész plain JS-ben, különösebb erőlködés és jQuery nélkül:
http://jsfiddle.net/Sk8erPeter/b5sxk/
Kipróbáltam, működik Chrome-ban, Firefoxban, Operában.
-
Sk8erPeter
nagyúr
Azért az legyen kiírva, hol hibáztunk, ez így nem túl informatív... (meg </br> >> <br />
Egy formban legyen submit típusú gomb, hogy Enterrel is el lehessen küldeni (különben így nem lehet). De submit gomból több is lehet egy formban, épp ezért a form onsubmitjára érdemes kötni a validálást, nem egy adott gomb onclickjére.(Ha csak billentyűzettel babrál, akkor nem biztos, hogy rá fog klikkelni a gombra.)
Amúgy meg a randa alert helyett jobb, amit írt, hogy egy error divbe írja ki a hibát.
-
Sk8erPeter
nagyúr
Nagyon nem szép megoldás akkor sem a szinkron (és NEM aszinkron
) hívás.
Amit írtál, az is átalakítható, ha megadsz egy callback-függvényre mutató pointert, úgy, hogy paraméterként azt is elvárod:Server.prototype.login = function(username, password, successCallback){
// .............
$.ajax({
// ............
success: successCallback,
// ........
});
// ......
}
function successSzarsag() {
// ide jöhet az, amit sikeres kommunikáció esetén szeretnél csinálni
}
$("#loginBtn").click(function(){
// ..........
server.login(uName, pwd, successSzarsag);
// ......
});Most ez csak gyorsan bepötyögött példa volt a kódod alapján, nyomokban hibát tartalmazhat, bár szerintem első ránézésre így működőképes.
Tényleg picit nehézkes átállni erre a gondolkodásra, erősen más megközelítést igényel, de érdemes végiggondolni, mert blokkolni a UI-t nagyon rossz megoldás.
-
Sk8erPeter
nagyúr
https://developer.mozilla.org/en-US/docs/HTML/Canvas/Tutorial/Basic_usage
Itt van a kulcsmondat a width és height attribútumok leírásánál a canvasra vonatkozóan, zárójeles megjegyzésként:
"The <canvas> element has only two attributes - width and height. These are both optional and can also be set using DOM properties. When no width and height attributes are specified, the canvas will initially be 300 pixels wide and 150 pixels high. The element can be sized arbitrarily by CSS, but during rendering the image is scaled to fit its layout size. (If your renderings seem distorted, try specifying your width and height attributes explicitly in the <canvas> attributes, and not with CSS.)"Hogy egész pontosan a CSS-beli megadás miért nem működik az elvártaknak megfelelően, azt nem tudom, de feltételezem, ez böngészőbeli implementáció kérdése, és jelenleg egyik böngészőben sem renderelődik a konkrét példa az elvártaknak megfelelően.
Érdekességként felfedeztem egyébként, hogy Operában hiába tartod nyomva a kurzorgombokat, nem fog arrébbmenni a vonal, csak akkor, ha egyesével nyomkodod őket. Ezzel a buggal (vagy feature?
) még nem találkoztam Operában. Bár gondolom most ez marginális kérdés, ha már marginális részesedésű böngészőről van szó.
-
Sk8erPeter
nagyúr
válasz
ahetaton #3477 üzenetére
Ha használsz jQuery UI-t, akkor van hivatalos jQuery UI-féle megoldás is:
http://jqueryui.com/tabs/#ajax
Persze biztos lehet találni igényeseket plain JS-ben is, én ilyet most hirtelen csuklóból nem ismerek. Hátha ajánl valaki plain JS-megoldást is, hogy ne legyen az, hogy csak a jQuery-t sz×pja mindenki. -
Sk8erPeter
nagyúr
Igazából csak egyetlen return false; kell a keydown eseménykezelő végére
Ha jól értelmezem, a felvetés az, hogy amikor a canvasra rákattintasz, és elkezded nyomni a kurzort valamelyik irányba, akkor elkezd rajzolódni egy vonal, de irányváltásnál van egy kis megakadás, amíg folytonosan kezd el haladni, hasonlóan ahhoz, mint amikor mondjuk egy szövegmezőben lenyomva tartod valamelyik betűt, és egy kis várakozás után kezd el csak rengeteg betű beíródni. Azt szeretné, hogy ne legyen várakozás, egyből tudjon kirajzolni a másik irányba is (lehetséges ez egyáltalán?).Ide már betettem a return false-t, meg a többi kevés kódot:
http://jsfiddle.net/KQW5w/1/ -
Sk8erPeter
nagyúr
Jaja, ez így van, de arra figyelj oda, hogy az async paraméter jQuery 1.8-astól kezdve deprecated:
http://api.jquery.com/jQuery.ajax/"As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success()."
Érdemes átgondolnod, hogy biztosan jó-e az, hogy egy sima bejelentkezés miatt szinkronná teszed a kommunikációt, ha egyébként általában az oldaladon az aszinkron kommunikációt erősen használod: szerintem ebben az esetben sem indokolt. Hadd döntse el a felhasználó, szeretné-e megvárni, míg megkapja a választ a szervertől, addig meg tegyél ki neki egy töltődő ikont. Zavaró lehet, ha addig használhatatlan a felület. Vagy legyen hagyományos lap-újrafrissülős megoldás. Vagy használd a jQuery BlockUI Plugint (vagy egy hasonló megoldást).
-
Sk8erPeter
nagyúr
válasz
sebastien19 #3467 üzenetére
Szerintem JavaScriptben a korábbiak alapján nem lehet egyértelműen megmondani, hogy automatizált klikkelés történt-e (épp JavaScripttel), vagy pedig ténylegesen egér általi. Én legalábbis nem látom azt a teljesen foolproof megoldást, amikor olyan event objektum jönne létre, amit ne lehetne kézzel felparaméterezni (lásd korábban linkelt kódok).
Ha valaki mégis tud egyértelmű módszert, megmondhatná.
"Pl. ha a tálcára kattint, akkor onnantól a lenyomott billentyűk sem érzékelhetők, ugye?"
Nem. -
Sk8erPeter
nagyúr
dzone-on volt fent ez a rendkívül hasznos script, hátha valakinek szüksége lesz hasonlóra egy projekt során:
http://theonion.github.io/fartscroll.js/
-
Sk8erPeter
nagyúr
válasz
sebastien19 #3452 üzenetére
Na, itt vannak jó példák arra, hogyan tudsz kódból MouseEventet előidézni:
http://stackoverflow.com/questions/11127908/difference-between-click-and-actually-clicking-a-button-javascript-jquery/11128099#11128099
https://developer.mozilla.org/en-US/docs/DOM/document.createEvent
dispatchEvent method
http://help.dottoro.com/ljrinokx.phpvan még a CustomEvent, IE9 fölötti verzióknál megy:
https://developer.mozilla.org/en-US/docs/DOM/Event/CustomEventegy élő példa a developer.mozilla.org oldalon:
https://developer.mozilla.org/samples/domref/dispatchEvent.html -
Sk8erPeter
nagyúr
Ez egyáltalán nem furcsa. Az AJAX-kommunikáció, mint a mozaikszóban benne is van, alapvetően aszinkron hívásokat eredményez, ergo az átirányítás valószínűleg még azelőtt meg fog történni, mielőtt az AJAX-kérés lefutna - nem várja meg, míg végez az akarmi().
Megoldás a logika újragondolása: biztos van értelme AJAX-kérés után ÁTIRÁNYÍTANI? Nem lenne jobb mondjuk az átirányított oldalnak átadni a megfelelő adatokat query string formájában? Ha arra jutsz, hogy maradjon az eredeti koncepció, akkor pedig az AJAX callback függvényébe kellene beletenned az átirányítást, hogy előbb az ott szereplő kérés mindenképp lefusson. -
Sk8erPeter
nagyúr
Egyszerűen nem értem a tanítási koncepciót (hogy mit? Sokszor ilyen tanároknál nem biztos, hogy van olyan...). Számológép készítését erőltetik rátok, visszaszámlálós órát készíttetnek, "bejelentkezős" formot csináltatnak JavaScripttel (!!), aztán pedig WEBSHOPOT akar veletek készíttetni a tanár, CSAK JavaScript-alapokon - de mindeközben nem tanítja meg, hogyan lehet validálni normálisan egy űrlapot, hogyan lehet átszínezni oldalon lévő elemeket, stílust változtatni, meg egy csomó gyakorlatias feladatot fel lehetne sorolni, ami biztos, hogy előkerül egy honlapkészítés során. De egy visszaszámlálós óra, számológép? Ki a francot érdekel? Előkerülhet egy bizonyos projekt során ilyesmi, de a leggyakrabban előforduló feladatokat kellene először begyakoroltatni, megmutatni ilyeneket, mint a fejlesztőpanel használata, stb., nem pedig a diákokon kiélni a gyökér kreativitását. Tényleg elkeserítő a helyzet a webfejlesztés "tanítása" során...
-
Sk8erPeter
nagyúr
Ja hogy Te a forráskódból szedted, sorry, azt nem néztem
, csak azt néztem, ami magában a szövegben van, példaként bemutatva:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}Na, de ha azt akarod használni, ami ott szerepel, akkor nézd tovább a forráskódot, láthatod, hogy ez a JavaScript-fájl is include-olva van:
http://www.quirksmode.org/quirksmode.jsitt pedig szerepel a Cookie objektum:
/* COOKIES */
var Cookies = {
init: function () {
var allCookies = document.cookie.split('; ');
for (var i=0;i<allCookies.length;i++) {
var cookiePair = allCookies[i].split('=');
this[cookiePair[0]] = cookiePair[1];
}
},
create: function (name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
this[name] = value;
},
erase: function (name) {
this.create(name,'',-1);
this[name] = undefined;
}
};
Cookies.init();ha ezt is beteszed a kódba, már működni fog.
Felraktam neked a kódot, ami amúgy nem valami szép:
===
Az tényleg durva, hogy tanítanak nektek JavaScriptet, de nem mutatják meg a fejlesztőpanelek használatát... -
Sk8erPeter
nagyúr
Ha nyitottál volna egy konzolt, elég gyorsan kiderült volna, mi a hiba.
Tehát első körben nyomj egy F12-t (vagy Ctrl+Shift+I), aztán kattints a Console panelre (ha FF-ot használsz, akkor ugye telepítve van a Firebug?). Aztán kezdd el kattintgatni a linkjeidet.
Gyorsan rájöhetsz, hogy valszeg elég hiányosan másoltad ki valahonnan az amúgy is szar kódot, mert se saveIt(), se readIt(), se eraseIt() függvényed nincs definiálva...Linkeltem neked egy oldalt, ahonnan szedhettél volna példakódot, arra nem reagáltál.
-
Sk8erPeter
nagyúr
válasz
phanfantom #3442 üzenetére
Szerintem nem érdemes feltalálni a spanyolviaszt, mert valakik már írtak hierarchikus menüt:
http://jqueryui.com/menu/
http://users.tpg.com.au/j_birch/plugins/superfish/ -
Sk8erPeter
nagyúr
összefoglaló, ami bemutatja a cookie mentését, olvasását, törlését:
http://www.quirksmode.org/js/cookies.html -
Sk8erPeter
nagyúr
válasz
megalover #3420 üzenetére
"Mondhatnám erre lett kitalálva.. De ezzel messzire jutnánk!"
Azért EREDETILEG az ARPANET nem "erre lett kitalálva", de aztán persze lett belőle lakossági felhasználás, majd kőkemény kommercializálódás, "ahogy illik".============
(#3432) megalover :
azért, mert az ilyen "téves klikkeléssel, hopsz, véletlen felnyílt egy oldal"-típusú nyereségszerzés gusztustalan, ehhez nincs mit hozzátenni. -
Sk8erPeter
nagyúr
válasz
megalover #3429 üzenetére
Igazából melyik részét nem érted annak, amit írt?
Nem nagyon hoztál fel ellenérvet, hogy miért is jó az, amit csinálsz.
Szerk.: pontosabban amit csinálni akarnál, amit a YouTube szándékosan bonyolított el, ilyen visszaélések (mesterséges látogatottságnövelés) elkerülése érdekében. -
Sk8erPeter
nagyúr
"de a dolog gyenge pontja egyébként is a PHP-hívásnál van"
Most ezt nem értettem, milyen PHP-"hívásnál"? Úgy érted, amikor a szerver megkapja a klienstől az adatokat? Csak mert akkor még totálisan irreleváns, hogy PHP, ASP.NET vagy Java-alapú szerver futkorászik a háttérben...
Szóval inkább az a lényeg, hogy a klienstől milyen adatok utaznak a szerver felé.Amúgy ja, valszeg a Flash-es vagy Java appletes módszer jobb lehet talán erre a kifejezetten kattintásorientált feladatra.
"Persze a favágó módszer a másodpercenkénti híváslimit beállítása, de az kicsit sérti a szépérzékem."
Miért, mi a gond azzal, ha valami totál irreális másodpercenkénti kattintásszámra azt mondjuk, hogy az tuti nem felhasználói kattintásmennyiség? -
Sk8erPeter
nagyúr
válasz
megalover #3395 üzenetére
Na, itt a válasz:
YouTube Says Autoplays Don’t Count
http://gigaom.com/2008/07/23/youtube-says-autoplays-dont-count/pont ahogy gondoltam, azért nem számolódik, mert nem felhasználói kezdeményezésre történik a lejátszás:
"YouTube has revealed that the company purposefully does not count video autoplays.“Autoplaybacks are not counted toward the visible ‘views’ numbers displayed on the YouTube site because autoplaybacks are not viewer initiated,” a YouTube spokesperson said via email, adding that viewcounts should be a reflection of the interests and intents of video viewers."
Pontosan azért, mert bizonyos felhasználók hivatalos partnernek számítanak, akik tudtommal nézettség után kapnak valamennyi lóvét is, de ilyen autoplay-megoldásokkal ez könnyen kijátszható, ráadásul idegesítő is lehet a felhasználónak.
-
Sk8erPeter
nagyúr
hát akkor jó...
Ha már nyomatod a Flash-t, gondolom tudod: Flash-es dologba ilyen módon (most a klikkelős játékról van szó) semmiképp nem lehet automatizáltan belenyúlni? Csak mert meglepődnék, ha erre már nem találtak volna ki módszert...
Nekem közöm nincs a Flash-hez (és nem is lesz), úgyhogy fogalmam sincs a válaszról. -
Sk8erPeter
nagyúr
válasz
sztanozs #3394 üzenetére
"Amit meg tudsz hívni, az a lejátszó publikus 'play' metódusa - de arról ugye tudja a lejátszó, hogy nem a gomb váltotta ki, hanem egy külső script hívta meg - így nem is számolja a lejátszást."
Mondjuk erről nem lenne rossz látni inkább valami hivatalos állítást, hogy mik okozhatnak különbséget a lejátszásban, és az API-n keresztüli lejátszás miért okozza azt, hogy az nem számolódik bele a lejátszásba. De simán el tudom képzelni, hogy az lenne az indok, hogy nincs közvetlen "user interaction", és ha automatikusan lejátszódik pl. egy reklámvideó (pont amilyet a kérdező akar beágyazni), akkor azt nem biztos, hogy a felhasználó meg is akarta nézni, mert esetleg akaratán kívül automatikusan lejátszódott a videó. Ebben az esetben viszont amit szeretne, az nem is megvalósítható, legalábbis az eddigi próbálkozásokkal (de hogy az előbb a Java applet hogy jött ide, na arra nagyon kíváncsi lennék... szerk.: rendben, azóta kiderült Tapsi hozzászólásából, hogy csak nagy tévedésből keverte ide).
-
Sk8erPeter
nagyúr
Te nagyon erőlteted mindenhol ezt a Flash-vonalat...
De akkor már indokold is meg. Flash-ben hogyan intézed el, hogy számolja a plusz látogatottságot? Próbálkoztál már ilyennel, onnan tudod, vagy csak tippelsz?
Java applettel megoldod, hogy számolja a látogatottságot, klikkeljen, amikor a rendes API-n keresztül nem?Ezt fejtsd már ki légyszi bővebben, tényleg nagyon érdekelne, készítettem már Java appletet, de nem igazán értem, te mégis mire gondolsz... (Arról nem is beszélve, hogy a Java-futtatós engedélykéréstől az átlagfelhasználó sanszos, hogy összeszarja magát.)
-
Sk8erPeter
nagyúr
válasz
sebastien19 #3390 üzenetére
Most konkrétan hirtelen a mikéntjét nem tudom, de rosszakaró biztos megoldja, mert kliensoldalról elvileg azt küldesz el, amit akarsz.
A karakterkódos scriptet azóta módosítottam, mert kiderült, hogy ha az egérgomb eseménykezelőjéből return false-szal térek vissza, akkor a fókusz (Chrome-ban legalábbis) átugrik a jsFiddle-oldalon a JavaScript-kódszerkesztő részre (az meg elég idegesítő, mert pont a funkcióját nem tölti be jól, ha itt futtatod), úgyhogy átírtam úgy, hogy ellenőrzöm, a jsFiddle-oldalon történik-e épp a végrehajtás, és a bal, középső vagy jobb egérgomb lett-e lenyomva, ha igen, true-val térek vissza; így már nem ugrik át a fókusz:
http://jsfiddle.net/Sk8erPeter/EAjYe/
A script mindig az utolsó lenyomott gombot írja ki, tehát értelemszerűen ha az input mezőbe klikkelsz, egy Ctrl+X-et úgy fog kiírni, hogy előbb kiírja a Ctrl-t (17-es keycode), majd utána az X-et (88-as keycode).
-
Sk8erPeter
nagyúr
válasz
megalover #3387 üzenetére
De pont azt mondom, hogy annál a videónál amikor a YouTube-on közvetlenül frissítgettem, akkor sem változott a látogatottság száma, hogy miért, azt nem tudom - én a cookie-kban való tárolásra tippeltem eddig, de a Te videód ellentmond ennek.
Nem írtad le, melyik résznél akadtál el. Az oldalon részletes segítség van hozzá, hogy kell beüzemelni.
Itt van további segítség.Vegyük azt, hogy van egy ilyen dived, amibe belekerül majd a videó:
<div id="youtube-player-container"> </div>
az oldalad head-részében include-olod a jQuery-t ÉS a TubePlayert:
<script type="text/javascript" src="{your_path_to}/jquery.min.js"></script>
<script type="text/javascript" src="{your_path_to}/jQuery.tubeplayer.min.js"></script>nyilván a {your_path_to} részt ki kell cserélni a saját elérési utadra.
Aztán a head-részbe belerakod a példakódot így:
<script>
$(document).ready(function () {
$("#youtube-player-container").tubeplayer({
width: 600, // the width of the player
height: 450, // the height of the player
allowFullScreen: "true", // true by default, allow user to go full screen
initialVideo: "DkoeNLuMbcI", // the video that is loaded into the player
preferredQuality: "default", // preferred quality: default, small, medium, large, hd720
onPlay: function (id) {}, // after the play method is called
onPause: function () {}, // after the pause method is called
onStop: function () {}, // after the player is stopped
onSeek: function (time) {}, // after the video has been seeked to a defined point
onMute: function () {}, // after the player is muted
onUnMute: function () {} // after the player is unmuted
});
$.tubeplayer.defaults.afterReady = function($player){ $("#youtube-player-container").tubeplayer("play"); };
});
</script>itt a DkoeNLuMbcI részt le kell cserélned a saját videód azonosítójára (ennél a videónál a cím így néz ki: http://www.youtube.com/watch?v=DkoeNLuMbcI, itt ebből tehát a v értéke). Mivel szerepel benne a
$("#youtube-player-container").tubeplayer("play")
sor is, ezért elvileg egyből le kell játszania a videót az oldal betöltődése után.=============
Na, de időközben inkább készítettem neked egy online demót, ahol egyből láthatod a kódot is.
>>> http://jsbin.com/irebiw/1/edit
Ha valahol elakadtál, kérdezz nyugodtan.
-
Sk8erPeter
nagyúr
válasz
megalover #3382 üzenetére
Tesztelted is a TubePlayert a saját oldaladon, a saját videódnál, vagy csak tippeltél?
Én nem vágom, mert nem próbálgattam még a nézettségi adatokat, ilyen YouTube-látogatottsággal még sosem kellett szórakoznom, főleg nem trükközgetéssel, a TubePlayer oldalán belinkelt videóra meg hiába frissítgetek, most nem változik ettől a látogatószám. Ezért feltételeztem, hogy cookie-tól függ.
Ennyi infó birtokában nehéz bármit mondani, mivel a Te oldaladon sem látom a plugint, így kipróbálni sem tudom. Azt láttam, hogy ha a videódra kattintgatok, nálad változik a látogatószám, ellentében az előbb belinkelt videóval. Szóval ezt nem vágom.
Azt a cikket, aminek utánanéztél, belinkelhetnéd. -
Sk8erPeter
nagyúr
válasz
sebastien19 #3383 üzenetére
Itt már adtam választ:
http://prohardver.hu/tema/php_kerdesek_2/hsz_13344-13344.htmlDe valóban inkább itt folytassuk.
-
Sk8erPeter
nagyúr
válasz
megalover #3373 üzenetére
Igazából mi a cél? Videó automatikus lejátszása?
Mert akkor használhatnád a YouTube JavaScript Player API-t:
https://developers.google.com/youtube/js_api_reference
vagy egy erre épülő jQuery plugint:
http://www.tikku.com/jquery-youtube-tubeplayer-plugin#tubeplayer_tutorial_2 -
Sk8erPeter
nagyúr
válasz
spammer #3370 üzenetére
Tessék, gyors favágó megoldás:
http://jsfiddle.net/Sk8erPeter/XeHt2/2/
felhasználom a Bootstrapet és a Font Awesome-ot is, lásd External Resources panel.
-
Sk8erPeter
nagyúr
"ilyen esetben a return false e.preventDefaultot jelent"
Nem, a return false event.preventDefault() ÉS event.stopPropagation() hívást IS jelent!
http://www.mail-archive.com/jquery-en@googlegroups.com/msg71371.html
Amúgy nincs mit
-
Sk8erPeter
nagyúr
válasz
spammer #3366 üzenetére
Az a "var" nem egy mágikus valami, csupán egy kulcsszó a változók deklarálására...
Amúgy azzal a kóddal az a para, hogy be van drótozva a JS-kódba a magyar szöveg, pedig lehet, hogy mondjuk az oldal többnyelvű, meg lehet, hogy könnyebben akarsz változtatni rajta, így azt szeretnéd, hogy csak a HTML-kódba kerüljön bele, itt van egy ilyen megoldás, vegyítve Jim-Y kódját és a .data()-t:
-
Sk8erPeter
nagyúr
"és minek raktad bele, hogy return false?"
Erről érdemes elolvasni ezt:
return false, event.preventDefault, event.stopPropagation
http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false(#3354) Jim-Y :
raggg: lemaradt egy záró ;
Igazából ez nem tekinthető SAJNOS hibának JavaScript-kód esetén, hiszen a JavaScript-kód automatikusan kiegészül pontosvesszővel, amennyiben explicite nincsenek kitéve.
Ez az automatikus kiegészítés adott esetben nem várt hibákat is okozhat, ezért egyébként jó, ha felhívjuk a figyelmét az embereknek, hogy ne felejtsék kitenni a pontosvesszőt.
Ha érdekel bővebben (érdemes tudni róla):
Automatikus pontosvessző beszúrás JavaScriptben
http://vimeo.com/15392265
http://www.slideshare.net/presidento/automatikus-pontosvessz-beszrs-a-javascriptben -
Sk8erPeter
nagyúr
válasz
spammer #3363 üzenetére
Azt javasolnám, hogy használj beszédesebb id-kat és class-okat, mert nagyon gondban leszel később, amikor újból meg kell nézni a kódodat, hogy most ez miért is épp #toggle3, a másik meg miért kapott .toggle3 class-t (miért ugyanaz a kettő, csak az egyik id, a másik class?), stb... Inkább legyen hosszabb neve, de legyen beszédes.
Csak érdekességként még ilyen megoldás is létezik:
http://jsfiddle.net/Sk8erPeter/XfDN6/Aztán másik lehetőség, ha nem akarod bedrótozni a szöveget a JS-kódba, használhatsz .data()-t:
-
Sk8erPeter
nagyúr
Bármilyen programozási nyelvről is van szó, gondold végig először a feladatod algoritmusát. Mit is kell csinálni, hogyan is lehet megoldani a feladatot, akár többféleképpen is, és a többféle megoldás közül érdemes kiválasztani a legrövidebb futási idejűt. Igazából az adott programozási nyelven megfogalmazni az adott feladatot már másodlagos kérdés (egy házat is először megterveznek, és csak utána esnek neki a megvalósításnak).
Az adott beviteli mezőbe begépelt karaktereken végigmész egy for ciklussal (length tulajdonságot felhasználva), és karakterenként megnézed, számról van-e szó. Az egy újabb kérdés, hogy minden egyes szám pozícióját külön-külön fel kell jegyezned (pl. asd1bla2qwe3, ebben a stringben 3 db szám is van), vagy csak a legelső szám pozíciója az érdekes.
-
Sk8erPeter
nagyúr
válasz
#68216320 #3337 üzenetére
"az a megoldás problémás lehet, ha mouseover-re jelenik meg a törlő ikon, mert amúgy a képre kattintással adom vissza a linket az editornak, window bezárással együtt"
Ezt most nem értettem, miért jelent problémát.Hogy érted?
A checkboxos megoldás egyébként teljesen jó.
"Viszont lesz egy olyan feladatom, ahol szükséges lesz a jobb menü az elemek tulajdonságainak lekéréséhez, törléshez, stb."
Háát, igazából ezekre is lehet bőven alternatívát találni, nem biztos, hogy a legjobb felülbírálni a jobbklikkes menüt. Persze ha a felhasználóknak bejövős, meg sikerül igényesen megoldani, akkor talán megbocsátható.
Csak az a gáz, hogy a felhasználók számítanak arra, hogy van egy default viselkedése a böngészőnek, és akkor hoppá, hirtelen egy adott felületen más, ez nem biztos, hogy jó. Ezt csak azért mondom, hogy lehet, hogy lesz olyan felhasználó, aki emiatt anyázni fog."Ott mindenképpen kelleni fog a content menü."
Mármint context menu.
Új hozzászólás Aktív témák
Hirdetés
- Argos: Szeretem az ecetfát
- Linux kezdőknek
- Könyvajánló
- Bambu Lab 3D nyomtatók
- Apple iPhone 16 Pro - rutinvizsga
- TCL LCD és LED TV-k
- RAM topik
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- sziku69: Fűzzük össze a szavakat :)
- Vicces képek
- További aktív témák...
- DDR5 GAMER PC: Új RYZEN 7 8700F +RTX 4060/5060/4070/5070 +16-32GB DDR5! GAR/SZÁMLA! 50 FÉLE HÁZ!
- Dell Latitude 7410 Strapabíró Ütésálló Profi Ultrabook 14" -80% i7-10610U 16/512 FHD
- Szép! HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -65% i7-1185G7 32/512 Iris Xe FHD Magyar
- HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -65% i7-1185G7 8/512 Iris Xe FHD Magyar
- 512 Gb-os NVME-k
- ÁRCSÖKKENTÉS Lenovo ThinkPad T570, T580, P51s, P52s eredeti Lenovo, belső akkumulátor eladó
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- NEC MultiSync V421 monitor (42") 1920 x1080px
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- Azonnali készpénzes nVidia RTX 2000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged