- Samsung Galaxy A56 - megbízható középszerűség
- Honor 200 Pro - mobilportré
- Xiaomi 14 - párátlanul jó lehetne
- Google Pixel topik
- Milyen okostelefont vegyek?
- Telekom mobilszolgáltatások
- Redmi Watch 4 - olcsó hús, sűrű a leve
- Redmi Watch 5 Lite - filléres fitneszfelügyelő
- Szinte játékpénzért megvehető a Honor Play 10C
- Android alkalmazások - szoftver kibeszélő topik
-
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
"ez nem tudom, hogy jön ide, bár akkor lehet nem értem még mindig az alapproblémát, nem azt kéne megvalósítani, hogy ha mondjuk ő letölti a gmailes kiegészítőt webstore-ból, akkor ennek az ikonját kéne online tárhelyen lévő képre változtatni?"
Én meg nem értem, mit nem értesz azon, hogy hogyan jön ide.
Hát épp az extensionökről kapsz adatot a chrome.management-en keresztül, így azok default ikonjáról is. Hogy változtatni is lehet-e ilyen módon, azt nem tudom, mert ez a része elég szegényes a Chrome-doksinak...
Értem én a példádat, és azt is, hogy a jobb megoldás valószínűleg tényleg a két extension közti kommunikáció, de én az adott helyzetre próbáltam kerülő utat találni - a chrome.management-en keresztül elérhető dolgokat nem próbáltam, így ezzel tapasztalatom még nincs. Na, de lehet, hogy holnap rászánom magam, már érdekel.===
(#2636) : "shell scripttel" - vagy Windows esetén egy sima batch-fájllal, amit a gép indítására (vagy bizonyos időközökre) ütemez, azt' kész. Vagy ha frissül egy kiegészítő, akkor azt úgyis látja, és akkor ráküldi a batch-fájlt.
-
Sk8erPeter
nagyúr
válasz
spammer #2635 üzenetére
"Igen, saját kiegészítőnél lehet állítgatni mindenfélét"
Hát azért nem mindenfélét. Vannak szándékosan biztonsági korlátozások.
Most itt konkrétan az ikoncserére egy kiegészítős megoldást mutattam, userJS-sel teljesen biztos, hogy nem fogod tudni állítani. De annál normálisabb mókolás amúgy is egy saját kiegészítő használata, csak némi JavaScript-tudás kell hozzá. Egyébként Chrome-hoz nagyon jó a kiegészítős API, Operánál pl. kevésbé. Firefoxhoz nem készítettem még extensiont, de egyébként Te magad írtad, hogy ott is csak egy másik kiegészítő segítségével lehet felülbírálni a többi kiegészítő kinézetét.Mivel a Stylish is egy kiegészítő.
"Próbálkoztam egy ilyennel is (ez a kieg elérési útja a böngésző számára):
// @match chrome-extension://ffmdedmghpoipeldijkdlcckdpempkdi/"
Ez így ebben a formában teljesen esélytelen. Eleve sokkal normálisabb megoldás az, hogy a felhasználótól engedélyt kell kérni, hogy egyáltalán hozzáférhet-e az a kiegészítő a többi kiegészítő adataihoz.
De ahogy írod, ezek szerint magához a Firefox-felülethez lehet egy CSS-fájlt készíteni, amivel a megjelenő elemek kinézetét felülbírálod. Na ennek még nem néztem utána, és valszeg nem is fogok, mert ha tehetem, kerülöm a Firefoxot.Amit én belinkeltem, az az extension API-nak az a része, aminek segítségével a többi kiegészítő adataihoz is hozzáférhetsz, de ahhoz saját extensiont kell megírni. Nem biztos, hogy olyan bonyolult, majd lehet, hogy holnap kipróbálom, mire is jó ez, lehet-e így változtatni az ikonokat, mondjuk sanszos, hogy nem.
Konkrétan milyen extensionöknek szeretnéd megváltoztatni az ikonját? Csak azért kérdezem, mert akkor kiderülne, azok egyáltalán hogyan működnek. Pl. ha kattintasz az extension ikonjára a toolbaron, akkor nem változik az ikonja? -
Sk8erPeter
nagyúr
Megnézted egyáltalán, amit linkeltem?
"The chrome.management module provides ways to manage the list of extensions/apps that are installed and running."
Ilyen módon - amennyiben ebben a kiegészítőben, amit a változtatgatás céljára készítettél, a felhasználótól elkérted és megkaptad az engedélyt - akár még le is tilthatsz kiegészítőket.
Meg kapsz egyéb infókat is a többi kiegészítőről.
Az ikont mondjuk nem tudom, meg lehet-e változtatni, lehet, hogy arról csak infót kapsz.Az ExtensionInfo objektumon belül:
icons ( optional array of IconInfo )
A list of icon information. Note that this just reflects what was declared in the manifest, and the actual image at that url may be larger or smaller than what was declared, so you might consider using explicit width and height attributes on img tags referencing these images. See the manifest documentation on icons for more details. -
Sk8erPeter
nagyúr
válasz
spammer #2630 üzenetére
Ez eléggé függ az extensiontől is, amiről szó van.
Pl. jópár extension van, ami kattintásra megváltoztatja az ikonját, olyan is van, ami inicializáláskor állít be egy tetszőleges ikont, sőt, olyan is lehet, ami bizonyos időközönként update-eli az ikon kinézetét (most épp nem arra gondolok, ami badge-et tesz rá, mint az elég hasznos Prohardver! Eszközök extension)
Van is egy sample extension is a kattintós ikonváltoztatásra a Google vonatkozó oldalán: [link]Viszont ezzel a modulok default ikonjáról lehet infót kérni:
chrome.management >>> IconInfoAzt nem próbáltam, lehet-e ilyen módon a default ikonokat cserélni...
=
"Egyébként a Chrome ilyen szempontból eléggé fapad, mert a Firefox pl. simán userstyle-okkal szarrá moddolható..."
Hát az nem fapadosság, ha biztonsági okokból nem engednek minden szarhoz hozzáférést...
"userstyle" alatt a user stylesheetet kell érteni? user stylesheettel tudod módosítani egy Firefox-extension ikonját? -
Sk8erPeter
nagyúr
válasz
Balázs1986 #2624 üzenetére
Hát basszus, igazad van, IE-ben nem is teszteltem. Tényleg a window.event a megoldás.
Itt van egy magyarázat, hogy miért is nem megy: [link]
"The problem is that e is undefined in IE because no event object is passed as a parameter to the event handler. You need the window.event property"Mindig meglep, hogy micsoda egy szar ez az Internet Explorer, hogy mindent tök máshogy kezel, mint az összes többi normális böngésző...
Viszont ez, amit korábban szintén linkeltem, gond nélkül működik IE-ben is, mert a jQuery lekezeli az ilyen böngészőbeli hülyeségeket, így az IE-ben előforduló gány dolgokat is.
Ha már így dumáltunk róla, megcsináltam a JSBinen a javított változatot is:
http://jsbin.com/axuzid/3/edit#javascript,html,live
Ez IE8-ban már jól működik!Plusz felraktam ide is:
[Checking arrow key codes with plain JavaScript] -
Sk8erPeter
nagyúr
válasz
Balázs1986 #2621 üzenetére
De itt mi a frásznak vizsgálgatsz user agentet? Tök felesleges.
Plusz talán nem IE6-ban kéne próbálgatni a JSBint...Nem olyan meglepő, ha abban a rakás fostalicskában nem működik úgy, ahogy kellene neki.
Na, de visszatérve. Eleve rossz gyakorlat mindent user agent vizsgálgatásától függővé tenni. Ha javasolhatom, erről még időben szokj le.
A jó gyakorlat az, ha egy adott böngésző képességeit vizsgálgatod inkább, hogy milyen feature támogatott benne.
De erre a keycode-os problémára meg ott volt az egyszerű egysoros kód:
var keycode = (event.which) ? event.which : event.keyCode;
Ha épp a lenyomott karakterek kódjára vagy kíváncsi, ki nem sz@rja le, hogy az adott felhasználó Internet Explorert vagy épp Konquerort vagy valami tök mást használ-e. -
Sk8erPeter
nagyúr
válasz
Balázs1986 #2619 üzenetére
Hát akkor valamit nagyon benéztél, ha a JSBines kód sem működik nálad.
(neki érdekes módon ment, ahogy nálam is most is
) Gondolom nem olvastad el, amit abban a hozzászólásban írtam, hogy egyértelműsítsem a dolgot.
http://jsbin.com/axuzid/edit#preview
KATTINTS BELE abba a területbe, ahol a Hello World szöveg van...majd nyomogasd a kurzorbillentyűket (nyilakat). -
Sk8erPeter
nagyúr
válasz
Balázs1986 #2617 üzenetére
-
Sk8erPeter
nagyúr
válasz
papa019 #2611 üzenetére
Pedig korábban egy eléggé hasonlót kérdeztél itt.
-
Sk8erPeter
nagyúr
válasz
[pod]Diablo #2609 üzenetére
Lehet, csináltam róla demót: [link]
Kelleni fog hozzá a jQuery UI is, itt is be van töltve.Egyébként gyorsan hozzáteszem, hogy felhasználói szempontból szerintem nagyon idegesítő, ha eltűnik a szöveg egy ilyen szövegmezőben, hadd döntsem el én, hogy mikor akarom kitörölni, ne törlődjön automatikusan! Ez főleg egy felhasználói név begépelésére szolgáló szövegmezőben nem indokolt.
-
Sk8erPeter
nagyúr
válasz
Chrystall #2607 üzenetére
ha a kódod úgy néz ki, hogy valami ilyesmi (nyilván lebutítva csak a példa kedvéért):
<!DOCTYPE html>
<html>
<head>
...................
</head>
<body>
...........
<div id="page">
..........................
<iframe src="...."></iframe>
...................
</div>
</body>
</html>Akkor pontosan ezt fogja látni a Google robotja is, és nem számít, hogy itt JavaScripttel akár kivettél, akár beraktál elemeket.
Hogy az iframe-ért mennyire büntet, azt már teljesen másik topicba tartozik (SEO), de az tény, hogy ha az a szempont, hogy a forráskódért büntet-e a Google vagy sem, akkor annak a JavaScripthez semmi köze, jelenleg ugyanis a Google keresőrobotja lesz@rja a JavaScriptes módosításokat. Ezért is kell arra ügyelni, hogy a tartalmak jól megjelenjenek kikapcsolt JavaScript mellett is, amennyiben számít a keresőoptimalizálás.
A Google Webmaster Tools-ban van egy Fetch as Googlebot opció, ha ezt megnézed, úgy fogod látni az oldaladat, ahogy a Google keresőrobotja látja - látod a headereket és a nyers forráskódodat.Egyébként ha van rá alternatíva, legjobb elkerülni az ilyen iframe-es beágyazást, és megoldani másképp (saját dinamikus tartalom generálásával, API felhasználásával, stb.).
-
Sk8erPeter
nagyúr
válasz
Chrystall #2605 üzenetére
Csak kliensoldalon tudnád módosítani, valóban JavaScripttel, pl. jQuery-vel:
http://stackoverflow.com/questions/1796619/how-to-access-the-content-of-an-iframe-with-jqueryDE most gyorsan hozzáteszem, hogy amennyiben a Google miatt érdekel a dolog, akkor totálisan semmi értelme az egésznek, mivel a Google nem JavaScripttel ellátott böngészővel fogja vizslatni az oldalad FORRÁSKÓDJÁT...
-
Sk8erPeter
nagyúr
válasz
Peter Kiss #2603 üzenetére
Ja, én is csak ezt használom, főleg, hogy a hibakezelés is jóval egyszerűbb vele.
-
Sk8erPeter
nagyúr
válasz
Dave-11 #2599 üzenetére
Feladatfüggő, hogy mennyire könnyű vagy nehéz...
Ha egy DOM-ban lévő elem háttérszínét akarod megváltoztatni, az tipikusan az elég egyszerű feladatok közé tartozik..."általában mire használják?"
Általában kliensoldali programozásra.
Leggyakoribb felhasználási területe a weboldal megjelenítésének és működésének felhasználóbarátabbá tétele kliensoldali kódokkal, formvalidálás, elemek elrejtése-megjelenítése, stb. Plusz AJAX-ozás, táblázatok legenerálása, stb. Aztán lehet bonyolítani.
Most csak nagyon röviden, leegyszerűsítve. -
Sk8erPeter
nagyúr
válasz
papa019 #2595 üzenetére
Így van, de itt van is egy példa, a for ciklus a lényeg, ott épp használja a getAt() függvényt:
function showArrays(event) {
// Since this Polygon only has one path, we can call getPath()
// to return the MVCArray of LatLngs
var vertices = this.getPath();
var contentString = "<b>Bermuda Triangle Polygon</b><br />";
contentString += "Clicked Location: <br />" + event.latLng.lat() + "," + event.latLng.lng() + "<br />";
// Iterate over the vertices.
for (var i =0; i < vertices.length; i++) {
var xy = vertices.getAt(i);
contentString += "<br />" + "Coordinate: " + i + "<br />" + xy.lat() +"," + xy.lng();
}
// Replace our Info Window's content and position
infowindow.setContent(contentString);
infowindow.setPosition(event.latLng);
infowindow.open(map);
}A leírás meg szintén ezt mondja:
"Polygon Arrays
A polygon specifies its series of coordinates as an array of arrays, where each array is of type MVCArray. Each "leaf" array is an array of LatLng coordinates specifying a single path. To retrieve these coordinates, call the Polygon's getPaths() method. Since the array is an MVCArray you will need to manipulate and inspect it using the following operations:
» getAt() returns the LatLng at a given zero-based index value.
» insertAt() inserts a passed LatLng at a given zero-based index value. Note that any existing coordinates at that index value are moved forward.
» removeAt() removes a LatLng at a given zero-based index value.Note: you cannot simply retrieve the ith element of an array by using the syntax mvcArray[I]; you must use mvcArray.getAt(i)."
=============================
A PHP-s részre:
az escape-elésről és PDO-témáról nemrég diskuráltunk: [link], [link]==
Mondjuk akkor esélyes, hogy ez is új lesz.
Látom valszeg valami adatbázis-wrappert használsz (bár esélyes, hogy nem használod ki a lehetőségeit), de nem látok bele a működésébe. A PDO használata indokolt lehet. -
Sk8erPeter
nagyúr
válasz
papa019 #2592 üzenetére
Nyugalom...
Amúgy én nem "haragszom".Hidd el, a Te érdekedben hívtam fel ezekre a figyelmet, nem azért, hogy csak azért is belédkössek. Fontos ezeket az elején megtanulni, hogy az ember később ne kövessen el nagy hibákat ezekből kifolyólag.
Ebből meg kihagytad az informacio függvényt, kapásból kidobja:
"Uncaught ReferenceError: informacio is not defined"
Ehhez kell:// Listener a K épület polygonjára való kattintáshoz
google.maps.event.addListener(k_epulet, 'click', informacio); -
Sk8erPeter
nagyúr
válasz
papa019 #2590 üzenetére
"Valamiért js-binen az egész nem megy, pedig nálam minden fut, csak nem tudom menteni a pontokat... :S"
Őőőő, de remélem most nem várod, hogy a szerveroldali dolgok menjenek jsbinen..."Igen, igen láttam, de aztán rájöttem, hogy felhasználóbarátabb egy külön gombnyomásra menteni, mint a polygonra kattintással."
És? Attól még confirm dialógust lehet nyitni jQuery UI Dialoggal is...
Abba meg olyan gombot raksz bele, amilyet szeretnél.Én nem a szerveroldali kódra voltam kíváncsi, hanem hogy hogyan szeded össze, serializálod, és akarod elküldeni szerveroldalra. Ergo a kliensoldal az érdekes.
Amúgy ha már mellékelted a szerveroldali kódodat: SOHA ne pakolj adatbázis-query-be közvetlenül, escape-elés nélkül alapvetően megbízhatatlan, felhasználótól érkező, általa könnyen módosítható adatot. SOHA.
-
Sk8erPeter
nagyúr
"A jQuery természetesen ezt csinálja, mert nekik nem ez a lényeg, hogy minden tag-hez külön fgv. stb."
Ja, hanem az a célja, hogy lehetőleg a legtöbb tagre működjön, és ne kelljen a böngészőtől megkapni arra vonatkozó komplett listát, hogy milyen tageket támogat.
Persze ha összegyűjtöd szorgalmas munkával a tagek többségét, aztán belerakod egy array-be, hát oké.
Nekem olyan nagyon nem csúf a jQuery-s szintaktika, amit mutattam.
A tiédnél annyi a különbség, hogy valóban jobban "szétválik", bár pár karakternyi különbség van, tehát szerintem lényegében irreleváns.Amúgy nyilván van haszna a pluginednek, félre ne értsd, most én nem akartam egy csöppet sem szembeállítani!
Jelen esetben csak azt vizsgálgattuk, hogy vajon van-e értelme minden tagről komplett lista alapján létrehozni egy hozzá tartozó "függvényt".
-
Sk8erPeter
nagyúr
válasz
papa019 #2583 üzenetére
Persze, hogy elő lehet csalogatni ilyen esetekre a jQuery UI Dialogot.
Beleraktam a demódba:
http://jsbin.com/uyevux/5/edit#javascript,html,live
Lásd az input_data() függvényt.
Amúgy még annyit csináltam, hogy a lap aljára, a HTML-kódba beleraktam ezt:
<div id="jquery-ui-dialog" title="Dialog" class="hidden">
<p></p>
</div>Meg létrehoztam a .hidden class-t, CSS-ből ezt alapból elrejtem.
Aztán a jQuery UI Dialog inicializálása:var $jquery_ui_dialog = $('#jquery-ui-dialog'), dialog_title = "My own map's dialog!";
$jquery_ui_dialog.dialog({ autoOpen: false });
$jquery_ui_dialog.dialog( "option", "title", dialog_title );
$jquery_ui_dialog.html('<p>I don\'t really know what to do with the "polygon_points" variable! :D</p>');
$jquery_ui_dialog.dialog('open'); -
Sk8erPeter
nagyúr
Jaaaaaa, értem, jó, így már felfogtam.
Szerintem erre nincs jobb, mintha stringként átadod úgy, ahogy a jQuery-nél lehet, pl. img tag dinamikus létrehozására a jQuery topicban épp mutattam példát: [link]
valahogy hasonlóan kellene megoldanod, persze akkor alternatív utat kell választani, nem ilyen "függvényszerűen" lehet meghívni (pl. div() ).
jQuery-kódban pl.:
// If a single string is passed in and it's a single tag
// just do a createElement and skip the rest
.....Aztán a végére eljutsz oda, hogy felfedezed a spanyolviaszt, és készítesz egy új jQuery-t.
-
Sk8erPeter
nagyúr
"A komplett lista azért kell mert akkor tudom a prototypejába betenni az alap objektumnak a függvényeket (.div(), .span() stb)."
Nem néztem meg a kódodat, és biztos most nehézkes a felfogásom, de most még mindig nem jön át, mi az oka, hogy a createElementes megoldás miért nem elegendő ehhez (tehát ha valaki divet szeretne kreálni, akkor document.createElement('div');). Mit hagyok ki? Mihez kell a komplett lista konkrétan?Példakódra rátérve: én amúgy nem értem, a megfelelő sorok végére miért nem teszel pontosvesszőt.
Sokkal áttekinthetetlenebb így a kód, jó is, hogy a JSLint szól érte.
A korábbi kódot, amit az oldaladról szedtem, elég gyorsan JSLint-validdá lehetett tenni:
http://jsfiddle.net/Sk8erPeter/Pm6pg/1/
Így már szerinte is okés (a class-ból 'class' lett, különben nem jó, mert foglalt névre hivatkozik a JSLint).
Példa még mindig nincs a GitHub-oldaladon.
Amúgy ha bejelentkezel a JSFiddle-oldalon, és ennél a kódnál rámész, hogy "Fork", akkor máris a Te neved alatt fog megjelenni.=========
(#2578) Forza_JUVE :
OK, nincs mit, ha kell segítség, akkor másold be ide a kódot, hogy mivel próbálkoztál, és segítünk. -
Sk8erPeter
nagyúr
Még annyit, hogy még mindig nem látom, hogy lenne bármilyen konkrétan kipróbálható kód is az oldaladon, ezért csináltam neked egyet kb. 2 perc alatt (csak azért mondom, mert nagyon nem árt egy ilyen demo):
http://jsfiddle.net/Sk8erPeter/Pm6pg/
Esetleg készíthetnél egy jsFiddle-accountot, és csinálhatnál saját neved alatt egy ugyanilyen demót, és belinkelhetnéd a GitHubos oldalra, hogy élesben is kipróbálható legyen.
Egy JSLintet ott a jsFiddle-felületen érdemes lenne legalább ráereszteni, és aszerint validdá tenni a példakódot és magát a "könyvtárat"/modult egyaránt. -
Sk8erPeter
nagyúr
Igen, ezt linkelted, de igazából ehhez nem nagyon értem, miért kellene neked a komplett lista.
Azt meg nem tudtam, hogy stringből generálod le, és nem mondjuk egy document.createElement segítségével (nem néztem meg a kódot), pedig az lenne a logikus.
Amúgy most hirtelen nem jut eszembe, mi az a DOM-elem, ami nem szokott működni, mondjuk ez nyilván böngészőfüggő, ergo IE-ben tuti csomó nem megy, de Chrome-ban ha csinálok egy ilyet:
document.createElement('asd');
Akkor létrehozza ezt:
<asd></asd>
Pedig ez nem egy "valid" tag a szokványos W3C-s DTD-k szerint - de miért ne lehetne ez teljesen valid egy saját DTD szerint?Mi ad vissza HTMLUnknownElement típust?
Ha azt ad vissza, akkor miért nem dobsz vissza egyszerűen egy hibaüzenetet, hogy a megadott DOM-elem valamilyen oknál fogva nem megfelelő, adjon meg mást? -
Sk8erPeter
nagyúr
Hű, hát ez egy jó kérdés. Most hirtelen nem jut eszembe ilyenre megoldás, de egyébként mire kellene ez neked konkrétan?
Plusz kíváncsiságból: milyen tagre akarnál esetleg tesztelni, amit egyik vagy másik böngésző nem támogat (úgy értem, pl. mit nem támogat adott böngésző, amire neked szükséged lenne)?
-
Sk8erPeter
nagyúr
válasz
Forza_JUVE #2565 üzenetére
Melyik ez az AudioPlayer?
Én azt javasolnám, hogy használd a nagyon jól testreszabható jPlayert, ez elvileg cross-browser módon működik, legalábbis elég sok böngészőre optimalizáltak, IE-re is.
Ahogy a linkelt példában látható, valami olyasmi nagy gombot tegyél be, hogy a felhasználó MINDENKÉPPEN le tudja állítani a zenét - de még jobbat mondok: csak tedd be a lejátszásra szolgáló gombot, de NE szólaltasd meg automatikusan a zenét. Hadd döntse el a felhasználó, egyáltalán szeretne-e zenét hallgatni, és ha igen, akkor mikor induljon a lejátszás!
Tehát nem muszáj kiszedned a zenehallgatási lehetőséget, de add a felhasználó kezébe a döntés jogát, mert azt szereti. Sokkal jobban értékelem én is az olyan oldalakat, ahol én dönthetem el, hogy kíváncsi vagyok-e az oldal tulaja által fontosnak tartott zenékre. -
Sk8erPeter
nagyúr
válasz
papa019 #2559 üzenetére
De nem is bonyolult. Az adatok elküldése előtt gyűjtsd össze, majd serializáld az adatokat - most épp én vagyok az új Kazinczy
-: [.serialize()].
Szerk.:
Pl. ha PHP-t választasz, POST metódussal elküldöd, és tömbszerűen megkapod az adatokat szerveroldalon:a hivatalos oldalon lévő példával élve:
<form>
<div><input type="text" name="a" value="1" id="a" /></div>
<div><input type="text" name="b" value="2" id="b" /></div>
<div><input type="hidden" name="c" value="3" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" id="f" />
</div>
<div>
<input type="submit" name="g" value="Submit" id="g" />
</div>
</form>Ez a .serialize() után:
a=1&b=2&c=3&d=4&e=5
Szerveroldalon PHP-vel pedig így kapod meg őket:
$_POST['a'] (ez itt épp == 1), $_POST['b'] (==2), stb....
-
Sk8erPeter
nagyúr
válasz
papa019 #2555 üzenetére
jQuery UI Dialog - Modal form
Aztán mondjuk Save gomb hatására AJAX-szal elküldöd szerveroldalra, hogy ott aztán el legyen mentve.
Hogy milyen adatbázist használsz, az teljesen más lapra tartozik, konkrét feladattól is függ, de adatbázisszervernek tökéletesen megfelelhet MySQL is. De ha adatbázisba fel akarod tölteni az adatokat, akkor gondolom az már egyértelmű, hogy ahhoz szerveroldali programozás (pl. PHP-vel vagy mással, szervertől függ) szükséges.Tehát dialógus felugrik, felhasználó beírja az adatokat, először kliensoldalon validálsz, majd ha oké, elküldöd az adatokat szerveroldalra, szerveroldalon megint validálsz, feldolgozod az adatokat, majd feltöltöd adatbázisba, kész.
-
Sk8erPeter
nagyúr
válasz
Coconut's #2550 üzenetére
Megy az. Felraktam neked ide egy példát:
http://jsbin.com/axuzid/edit#javascript,html,live
Kattints először a jobb oldali panelbe, és utána nyomkodd a kurzorbillentyűket.Bal oldalt meg láthatod a kódot.
-
Sk8erPeter
nagyúr
válasz
Coconut's #2548 üzenetére
Érted is, amit írsz?
document.onkeydown = checkKeycode;
Itt beállítod az onkeydown eseményre a checkKeycode függvényt, de ahogy elnézem, nincs is ilyen függvényed.
Akkor ez eleve hiba.Ezenkívül:
else if (e) {
keycode = e.which;
}
itt honnan kéne megkapnia az eventet? Ha ezt épp az előbb említett, hiányzó függvényben csinálnád, úgy, hogy a függvény paramétere az event (e) lenne, akkor még érteném.Ha érdekel, épp nemrég írtam példát billentyű-lenyomások figyelésére:
[link] -
Sk8erPeter
nagyúr
válasz
papa019 #2546 üzenetére
Egymásba ágyazott ciklusokkal.
Tehát jelen esetben egy each-en belüli each-csel. Tulajdonképpen megcsinálhatod for ciklussal is, de az each egy egész egyszerű iterátor.
Remélem jól értettem, amit szerettél volna, és a polygonokat szeretted volna még bejárni.
Megcsináltam ezt a módosítást is, nézd meg az each-nél lévő részt:
http://jsfiddle.net/Sk8erPeter/kVFb2/1/
Így már természetesen jóval hosszabb infókat ír ki. -
Sk8erPeter
nagyúr
válasz
papa019 #2544 üzenetére
1.) Megkukkantottam egy példakódot az Info Windows-ra: [link]
2.) Globálissá tettem az infowindow és marker változót (lásd az elején).
3.) Beraktam a megfelelő tartalmat a lista után:list_html =
$('<ul/>', {
'id' : 'my-location-list',
'class': 'my-new-list',
html: items.join('')
});
$('#location_data').html(list_html.html());
infowindow = new google.maps.InfoWindow({
content: list_html.html()
});
infowindow.open(map, marker);Nyilván az infowindow rész a lényeg.
4.) Kész: [link]. Kattints a gombra a teszteléshez, akkor felugrik az infowindow.
Ugyanez jsFiddle-re felrakva, ott JSLinttel validálva: http://jsfiddle.net/Sk8erPeter/kVFb2/
Persze nem egy gyönyörű kód, de jó az vidékre. -
Sk8erPeter
nagyúr
válasz
Speeedfire #2542 üzenetére
Ez nem bug, ez feature!!
-
Sk8erPeter
nagyúr
válasz
Coconut's #2540 üzenetére
Szívesen! Ha valamelyik rész nem tiszta, van valami kérdésed ezzel kapcsolatban, akkor nyugodtan tedd fel!
(#2539) Jim-Y : no para, nincs mit.
Az pedig, hogy segítettél, nagyon is értékelendő.
Amúgy a HTML-kód valamilyen szintű validitásával azért érdemes foglalkozni, mert megjelenítésbeli problémákat okozhat, ha durva hibák vannak a szintaktikában, meg a különböző böngészőkre történő hekkelések szükségességével bonyolíthatja a munkánkat.(#2538) Speeedfire : külön öröm, ha sikerült rászoktatnom valami jóra.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #2511 üzenetére
Közben találtam kerülő "megoldást" (bár ez túlzás, h megoldás), az itt linkelt kódban két sor csillag kommentet tettem a végére, így azt tudom, hogy azt már felesleges másolni, nyugodtan törölhető, így nem kerül az a fos karakter sem a végére.
Viszont tanulságos, ezért neked is mondom, mert Te is szoktad használni a jsFiddle-t, hogy van bal oldalt az az első select lista, ahol ott van, h "no wrap (head)", "no wrap (body)", "onDomReady", "onLoad", na ott általában az defaultként "onLoad"-ra van állítva.
Ez nem mindig jó: pl. én nem értettem, mi a büdös francért nem működik a fentebb linkelt kód, ha ez erre van állítva, és én a window.onload-ra kötöm a betöltéskor lefuttatandó kódjaimat. Átállítottam "no wrap (head)"-re, és már jó volt... Csak ezzel szarakodtam jó ideig, mert azt hittem, a kódban csesztem el valamit. jsbinen ilyen beállítási lehetőség nincs, úgyhogy ott megy egyből. ("néha a kevesebb több")
-
Sk8erPeter
nagyúr
Jim-Y: láttad, amit írtam neked? Csak mert tudod illik reagálni, ha mások foglalkoznak az ember problémájával.
(#2532) Jim-Y : ez a HTML-kód igen erősen invalid.
Nézd át még egyszer.
-
Sk8erPeter
nagyúr
Majdnem jó, ahogy Speeedfire írta, eggyel még feljebb kellett volna menned.
Ez jó, ezt kipróbáltam, úgy, hogy szűkítettem a p-ket még az url class-szel rendelkezőkre:
$("img").click(function (){
var p = $(this).parent().parent().find("p.url").text();
alert(p);
});Felraktam neked ide egy példát róla:
http://jsbin.com/ujiruc/edit#javascript,html,liveMásik megoldás röviden a .closest() használata:
http://jsbin.com/ujiruc/2/edit#javascript,html,live
Ez felfelé rohangászik a DOM-fában, úgy próbálja megtalálni a selectornak megfelelő elem(ek)et. -
Sk8erPeter
nagyúr
válasz
SektorFlop #2508 üzenetére
Rövid példával élve lehet másképp is ellenőrizni:
contacts = [{name:'Pete', asd: 'asd'}, {asd: 'asd'}];
for(var index = 0; index<contacts.length;index++){
alert(contacts[index]['name']);
}
Itt látható, hogy a második cikluslépésben "undefined"-ot dob fel.Szóval próbáld így, mert így nem dob exceptiont:
var name = contacts[index]['name'];
if(!name){
name = 'Unknown name';
}
else{
name = contacts[index]['name']['formatted'];
}Remélem így jó. Lehetne ugyanilyen módon a phoneNumberre is csekkolni.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #2509 üzenetére
Stack Overflow-n meg is van a válasz: [link].
"Some kind of encoding error..." -
Sk8erPeter
nagyúr
válasz
Speeedfire #2506 üzenetére
Na, legalább már tudjuk, milyen karaktert tol bele.
De ez jsFiddle-nél következetesen így van sajnos. -
Sk8erPeter
nagyúr
válasz
Coconut's #2501 üzenetére
Az elején egy randomszámot generálsz, megszorzod kettővel, majd hozzáadsz egyet. Miért feltételezed, hogy ez feltétlenül 1 vagy 2?
Pl. most nálam épp 2.596422648523003 jött ki...Ha azt szeretnéd, hogy ez valaha igaz legyen, akkor használd pl. a Math.floor() függvényt, pl. így:
Math.floor( ((Math.random() * 2) + 1) )
Azért javasoltam a Math.floor()-t, mert a Math.round() kerekítés egy felkerekítés esetén még 3 is lehet akár (lásd az előbbi számot). -
Sk8erPeter
nagyúr
válasz
Speeedfire #2500 üzenetére
Igen, azért van ez, mert a jsFiddle-ről közvetlenül kimásolva a kódok elb@szódnak, egyelőre nem jöttem rá, milyen karaktert tesz a kódokba, de nálam is így van.
A trükk pedig az, hogy a kódok legeslegvégét töröld ki (általában elég akár a legvégén lévő }); kitörlése is), és kézzel írd vissza!(#2496) SektorFlop : jaja, gondoltam, hogy a phoneNumberrel van baj. Akkor majd írj, mire jutottál.
-
Sk8erPeter
nagyúr
válasz
SektorFlop #2494 üzenetére
Hmm, akkor esélyes, hogy tényleg valahol dob egy el nem kapott exceptiont, ezért áll le a ciklus, és ezért nem írja ki a neveket, de nyomozzuk ki, próbáld meg a try-catch blokkal, hátha azzal előrébb jutunk.
-
Sk8erPeter
nagyúr
válasz
SektorFlop #2492 üzenetére
Nincs mit!
De azért oldjuk meg ezt a problémát, már engem is zavar.
A contacts.length-re mennyit ír?Lehet amúgy, hogy az egész for ciklus belsejét egy try-catch blokkba kellene tenni, így legalább elkap minden esetlegesen keletkező kivételt (ilyenekre gondolok, hogy mondjuk nem létezik a contacts[index].name.formatted kulcs, csak a .name-ig, vagy ilyesmi), tehát próbáld átalakítani így a for ciklusodat (a korábbiak megmaradhatnak, még az isset() függvény felhasználása is):
for (var index = 0; index < contacts.length; index++) {
try {
var name = contacts[index].name.formatted,
li = document.createElement('li'),
phoneNumbers, phoneNumber_first;
try {
if (isset(contacts[index].phoneNumbers)) {
phoneNumbers = contacts[index].phoneNumbers;
}
if (isset(phoneNumbers[0].value)) {
phoneNumber_first = phoneNumbers[0].value;
}
} catch (e) {
alert('problem with phoneNumber...');
}
if (isset(phoneNumber_first)) {
li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
} else {
li.innerHTML = "name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";";
}
ul.appendChild(li);
} catch (e) {
alert(e);
}
}Most itt annyit változtattam, hogy belepakoltam egy try-catch blokkba.
-
Sk8erPeter
nagyúr
válasz
[pod]Diablo #2483 üzenetére
Szívesen!
Szerk.: most észrevettem egy apró szintaktikai hibát:
$new_content_div = $('<div/>', {
'class': 'menu-content hidden loading',
});
helyette:
$new_content_div = $('<div/>', {
'class': 'menu-content hidden loading'
});egy plusz vessző volt a hiba.
Itt a jó változat:
http://jsbin.com/ekesul/11/edit#javascript,html,live -
Sk8erPeter
nagyúr
válasz
Speeedfire #2479 üzenetére
Pont korábban térképmegjelenítésről beszélgettünk: [link].
A "Resource interpreted as" jellegűekkel meg annyira ne foglalkozz, az csak warning. Magában a kódban elvileg hibát nem okoz.
(#2478) Jim-Y : OK, majd megpróbálok ránézni, csak sajnos az extension teszteléséhez nem elég az, hogy bedobom jsbinre vagy jsfiddle-re, így kicsit melósabb.
-
Sk8erPeter
nagyúr
válasz
[pod]Diablo #2474 üzenetére
Na, átalakítottam végre ezt a kódot kicsit "szebbé", annyiban, hogy nincs minden egyes elemnél ott, hogy "onclick", mert az elég csúf megoldás.
Tehát így néz ki most, inkább próbáld ezt alkalmazni:http://jsbin.com/ekesul/9/edit#javascript,html,live
Ebből kiindulva pedig a betöltésre megoldás: .load()
Az lenne a legegyszerűbb, ha minden betöltendő fájlod neve megegyezne az id-k nevével.
Tehát ha a kattintott menü azonosítója "xhome", akkor pl. "xhome.html", ha "xprog", akkor "xprog.html" lenne a fájl neve, és így tovább, ezt tárolhatod pl. a "contents" nevű könyvtáron belül (most a példakódot így mutatom).
Ehhez a kódhoz teljes mértékben átalakítottam az eddigit, de így egyszerűbb is lett talán, szerintem elég alaposan felkommenteztem, hogy értsd, mi történik:
http://jsbin.com/ekesul/10/edit#javascript,html,live===
(#2475) SektorFlop :
ez így van, így sokat lehet tanulni.
Majd mondd el, mire jutottál, kíváncsi vagyok! -
Sk8erPeter
nagyúr
válasz
SektorFlop #2471 üzenetére
Pont kérdezni akartam, milyen készüléked van, mert [írják], hogy pl. BlackBerry-n csak részleges a támogatása. Ez más készüléken is igaz lehet.
Ezért érdemes ellenőrizni, hogy mondjuk létezik-e egyáltalán phoneNumbers, mert ha nem, és azt próbálod felhasználni, akkor könnyen kaphatsz egy exceptiont, és onnantól nem csoda, hogy nem működik az egész.
Próbáld meg a következőképp:
Az onSuccess-t módosítsd az alábbi módon, és egészítsd ki az isset() függvénnyel, ahogy alább látható, a többi kód maradhat ugyanúgy:function isset () {
// !No description available for isset. @php.js developers: Please update the function summary text file.
//
// version: 1109.2015
// discuss at: http://phpjs.org/functions/isset
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: FremyCompany
// + improved by: Onno Marsman
// + improved by: Rafał Kukawski
// * example 1: isset( undefined, true);
// * returns 1: false
// * example 2: isset( 'Kevin van Zonneveld' );
// * returns 2: true
var a = arguments,
l = a.length,
i = 0,
undef;
if (l === 0) {
throw new Error('Empty isset');
}
while (i !== l) {
if (a[i] === undef || a[i] === null) {
return false;
}
i++;
}
return true;
}
function onSuccess(contacts) {
var ul = document.getElementById("list");
alert('length of contacts: '+contacts.length);
for (var index = 0; index < contacts.length; index++) {
var name = contacts[index].name.formatted,
li = document.createElement('li'),
phoneNumbers,
phoneNumber_first;
try{
if(isset(contacts[index].phoneNumbers)){
phoneNumbers = contacts[index].phoneNumbers;
}
if(isset(phoneNumbers[0].value)){
phoneNumber_first = phoneNumbers[0].value;
}
} catch(e){
alert('problem with phoneNumber...');
}
if(isset(phoneNumber_first)){
li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
}
else{
li.innerHTML = "name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";";
}
ul.appendChild(li);
}
} -
Sk8erPeter
nagyúr
válasz
SektorFlop #2460 üzenetére
Rájöttem, hogy a kettő között mi a különbség.
A kódban, amit Te mutattál, ez van:options.filter="";
var fields = ["phoneNumbers", "name"];a példakódban ez:
filter = ["displayName"]; // return contact.displayName field
Itt mondjuk elcseszték, filter helyett itt fields akart szerintem lenni az elnevezés, de mindegy, nem is ez a lényeg.
Tehát ott displayName-et használnak, nálad a sima name van. Lehet, hogy a name valamiért üres (ezért nem jelenik meg nálad), a displayName viszont nem.Ezért az itt lévő kódodat közelítsük meg másképpen, próbáld átírni így a JavaScript-kódot:
function onDeviceReady() {
var options = new ContactFindOptions();
options.filter = "";
var fields = ["displayName", "phoneNumbers", "name"];
navigator.contacts.find(fields, onSuccess, onError, options);
}
function onSuccess(contacts) {
var ul = document.getElementById("list");
for (var index = 0; index < contacts.length; index++) {
var name = contacts[index].name.formatted;
var phoneNumber = contacts[index].phoneNumbers[0].value;
var li = document.createElement('li');
li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
ul.appendChild(li);
}
}
function onError(error) {
alert('hiba!');
}
function init() {
document.addEventListener("deviceready", onDeviceReady, false);
}===
(#2466) SektorFlop : az entries tömb hosszát adja meg.
-
Sk8erPeter
nagyúr
válasz
papa019 #2465 üzenetére
Itt már térkép is van:
http://jsbin.com/igahov/5/edit#html,live
Nem bírtam ki.
Mondjuk speciel itt azzal nem foglalkoztam, hogy azok a korábbi, jemeni adatok megjelenjenek. -
Sk8erPeter
nagyúr
válasz
papa019 #2459 üzenetére
Most arra gondolsz, hogy a felhasználó pozíciójától függően kérsz le mondjuk a WikiMapia oldaláról címeket, úgy, hogy a felhasználó pozícióját belepasszírozod a címbe?
Mert természetesen azt is meg lehet csinálni, akár gombnyomásra, pl. így is átadhatod a címbe változóként a különböző számokat:
var
user_location = { lat : 17, lon: 49 },
json_file_path = 'http://api.wikimapia.org/?function=search&key=3C19A732-DE0DF7D4-E31566D8-713BEEA1-FF9550F8-FEAF6EBD-2C9FCAC9-2CE5F4D0&q=town&lat='+user_location.lat+'&lon='+user_location.lon+'&format=json';Most még nem néztem meg, hogyan határozod meg a felhasználó pozícióját, de készítettem egy példát, hogyan tudod gombnyomásra lekérni a pozíciókat:
http://jsbin.com/igahov/3/edit#html,liveMindjárt ránézek, hogyan határozod meg a felhasználó helyzetét.
-
Sk8erPeter
nagyúr
válasz
papa019 #2457 üzenetére
http://jsbin.com/igahov/2/edit#html,live
Itt láthatod, hogy hogyan hozod össze a HTML-kóddal. Csak ezt a jsbinen szépen el lehet különíteni.A második kérdésedet viszont nem értem, mire gondolsz azalatt, hogy a "változót csak simán beleírom". Eleve minden adatot a JSON-fájlból kapsz meg, annak tartalmát egy ciklussal íratom ki itt. Fejtsd ki egy kicsit bővebben.
-
Sk8erPeter
nagyúr
válasz
SektorFlop #2455 üzenetére
Hát most így nem látok bele, alapból úgy gondolnám, ha beállítod, hogy ne csak egyet adjon vissza, akkor nem is csak egy lesz benne, és tömbként működik, különben stringként... ezt viszont cáfolja az utána lévő példa, ha tudnám próbálgatni, könnyebben meg tudnám mondani, de nálad van az eszköz.
És ha pontosan úgy csinálod, ahogy ebben a példában van, tehát alerttel megpróbálod mindegyiket kiíratni?
-
Sk8erPeter
nagyúr
válasz
papa019 #2453 üzenetére
Szívesen!
Egy kicsit ismerni kell a jQuery-t ahhoz, hogy így tovább tudd vinni.
Természetesen sima JavaScripttel is nyugodtan megoldható, de macerásabb, a jQuery nagyon kényelmes eszközöket kínál ehhez (pl. az AJAX-os kommunikáció ezáltal brutálegyszerű).
Nyugodtan kérdezz, ha elakadtál! -
Sk8erPeter
nagyúr
válasz
papa019 #2451 üzenetére
Na, ezek szerint már vágod a Google Maps API-t valamennyire, nem?
Azt hittem, ez új, de akkor valamennyire már belementél, ez jó.Az előzőre visszatérve: ha áttekinthetően is meg szeretnéd nézni a JSON-kimenetet, akkor alakítsd átlátható formátumúra, miután ide bemásoltad a tartalmát:
http://jsbeautifier.org/Igazából ez a JSON-kimenet, amit linkeltél, elég jól áttekinthető. Szóval igazából nem rossz ez a WikiMapia.
Tulajdonképpen az oldalukon ők is Google Maps API-t használnak, szóval én eleinte egy kicsit félreértettem az eredetinek a célját.
A lényeg: nyugodtan használhatod a WikiMapiát szerintem, így jobban belekukkantva egész könnyű használni, mert igazából innen a lényeg az adatok kiszedése, a megjelenítést meg úgyis Google Maps-szel fogod, szóval visszavonom a korábbiakat, maradhat szerintem ez is nyugodtan, nem kell migrálni.
Ha segítség kell hozzá, akkor kérdezz nyugodtan.Az általad linkelt JSON-fájl alapján egy viszonylag primitív példát készítettem neked jQuery használatával, ebből jól látható, hogyan szedem ki az adatokat (aztán ez továbbvihető, az adatok alapján térkép generálható):
http://jsbin.com/igahov/edit#javascript,live
Ha bepipálod a HTML checkboxot is fölül, akkor láthatod, hogy igazából lószart sem raktam a HTML-be a nagyon szükséges dolgokon kívül, az egész HTML-tartalmat jQuery-vel generálom le, abból az adatból kiszedve, amit linkeltél.
Hátha ez segít elindulni az úton. -
Sk8erPeter
nagyúr
válasz
papa019 #2449 üzenetére
Nem kell feltétlenül saját adatbázis, én a helyedben inkább migrálnám valami normálisan kezelhető API-ra, pl. a Rolly által korábban linkelt Google Fusion tables-re, vagy valami hasonlóra. A Google nagyon jó dokumentációkat szokott készíteni a cuccaihoz, így szerintem biztos hamarabb eredményre jutnál ezzel és a Google Maps API-val, mint a WikiMapia sz@rával.
Amúgy mi az a cím, amiről megkapod azt az XML-tartalmat?
Csak hogy hogy néz ki annak a JSON-változata, azt megkukkantanám. Ha belinkeled az XML-es változatot, az is jó, elvileg átalakítható.
Akkor ha jól értem, azt a meglévő adatbázist kéne felhasználnod. Egyébként miért pont ezt, ha mindegy volt, milyen adatbázist használsz fel, csak legyen egy készen lévő? -
Sk8erPeter
nagyúr
válasz
Sk8erPeter #2445 üzenetére
Egyébként szerintem ezerszer jobban járnál a Google Maps API-val, bár nem tudom, mi a cél.
-
Sk8erPeter
nagyúr
válasz
papa019 #2443 üzenetére
Itt a dokumentációja.
Először is ha már JS-ben akarod használni, akkor a JSON-formátumot kérd le, elvileg a format paraméterrel meg tudod adni ezt is: [link]. Ahogy itt a címben hozzácsapja: [link].
A többit nem tudom, nem használtam még a WikiMapia API-t. -
Sk8erPeter
nagyúr
válasz
SektorFlop #2441 üzenetére
Gyors keresgélés után megtaláltam a ContactFindOptions-t: [link].
Ez alapján pedig ez a baj:
Propertiesfilter: The search string used to find contacts. (DOMString) (Default: "")
multiple: Determines if the find operation should return multiple contacts. (Boolean) (Default: false)A félkövérített rész azt mondja meg, hogy alapértelmezettként nem sok emberkét ad vissza, hanem egyet a felvett kapcsolatok közül.
Ezért a megoldás az, hogy egészítsd ki a kódodat, az
options.filter="";
sor ALÁ rakd még be ezt is:
options.multiple=true; // return multiple resultsRemélem így már sikerül, majd írd meg, mi a helyzet.
-
Sk8erPeter
nagyúr
válasz
SektorFlop #2439 üzenetére
És szerinted honnan találjuk ki, hogy mi van a contacts tömbödben?
Az sem igazán világos, a nevek kilistázására szolgáló függvénynek hogyan adhattál ennyire nem találó nevet, mint az onSuccess.Minden függvény lehetőleg kapjon olyan nevet, amire való.
Szóval ha szeretnél segítséget, teljes kódra lenne szükség, vagy legalább olyanra, amiből kiderül, egyáltalán mit csinálsz korábban.
Példakódot is felrakhatnál jsbin-re: [link]. -
Sk8erPeter
nagyúr
válasz
[pod]Diablo #2436 üzenetére
Az lesz a gond, hogy nincs betöltve a jQuery UI.
Itt a korábban elkészített kódban próbáld ki, hogy kikommentezed a jQuery UI elérési útját (<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>), majd nyitsz egy konzolt Chrome-ban az F12-vel (Console fül), és kattints valamelyik menüpontra, ugyanez lesz a hiba. -
Sk8erPeter
nagyúr
válasz
[pod]Diablo #2434 üzenetére
Az eredeti kódod egyáltalán nem működik itt jsFiddle-ön, csak ha így átírom: [link] (lásd addEventListener).
Úgy tudnád leginkább "együvé tartozóvá" alakítani a kódodat (tehát hogy az adott személyekhez adott életkor tartozzon), hogy objektumokból építed fel a listádat, ami így egy objektumokat tartalmazó tömb lesz. Az objektumok pedig valahogy így nézzenek ki gyors példával (látszik benne egyből az értékek felhasználása is):
var Persons = [],
persons_output = '',
i = 0;
Persons.push({
name: 'Pista',
age: 123
});
Persons.push({
name: 'Józsi',
age: 65
});
for (i = 0; i < Persons.length; i++) {
persons_output += "name: " + Persons[i].name + ", age: " + Persons[i].age + "\n";
}
alert(persons_output); -
Sk8erPeter
nagyúr
Hmm, hát nem tudom, lehet, hogy a v3-as API-ra való átállásnál történt egy-két galiba, sokan nyavalyognak, hogy a régi Google Maps-es alkalmazásuk az átállás óta nem működik megfelelően (most már nem tudom, hol olvastam, de sztem Drupalnak a Gmap moduljára vonatkozóan magyar és külföldi fórumon is).
-
Sk8erPeter
nagyúr
Tudom, hogy tudnak fogadni belőle adatot...
Eddig is erről beszéltünk.
De nem értem, miért ne működhetne a PHP-s API felhasználásával az adatok JS-kódba íratása, úgy, hogy nem feltétlenül egy megadott Fusion táblához csatlakozol, hanem mondjuk a Gmap modullal rajzoltatod ki a markereket.VAGY ha mégis, akkor miért baj, hogy publikus a tábla? Ez volt a lényegi kérdés igazából...
-
Sk8erPeter
nagyúr
Hogy érted, hogy view-t? Hol, mivel?
Amúgy ha PHP-vel csatlakozol, majd lekéred a megfelelő adatokat, azt kiíratod JS-kódba, akkor végül is nem kell, hogy bárki hozzáférhessen JS-sel.Amúgy őszintén szólva nem értem, miért baj, ha maga a lista publikus. Gondolom update-elni csak felhasználónévvel és jelszóval lehet. A többi adatot meg úgyis látja mindenki a honlapodon, tök mindegy, hogy most az honnan származik... Nem?
-
Sk8erPeter
nagyúr
Hogyhogy teljesen publikusak?
Nem néztem utána, de itt a példában úgy tűnik, felhasználónevet, jelszót is meg kell adni:
//get token
$token = ClientLogin::getAuthToken('username', 'password');
$ftclient = new FTClientLogin($token);
.... -
Sk8erPeter
nagyúr
Bocs, de korrigálnom kell magam, mert hülyeségeket beszéltem.
A v3-as verzióhoz valóban nem kell API-kulcs, én azt feltételeztem, a saját térképek helyes működéséhez kell, de kiderült, hogy csak a monitorozáshoz van extra haszna - na meg mondjuk az is tény, hogy pl. a Drupalnál vannak modulok, amikhez követelmény a Google v3-as API-kulcsa.
Még saját testreszabott térképek megjelenítését nem próbáltam API-kulcs nélkül, hogy úgy működik-e (az infók szerint kellene nekik).[link]
"Google Maps JavaScript API v3The Google Maps JavaScript API v3 does not require an API key to function correctly. However, we strongly encourage you to load the Maps API using an APIs Console key which allows you to monitor your application's Maps API usage. Learn how to use an APIs Console key."
A plugin honlapján egyébként ezt írják:
jQuery gMap:
"You need to use the Maps API V3 Javascript from Google, you can set the sensor parameter to true or false to detect the user's location, there's no need to generate an API key:"
De itt most csak arról beszél, hogy ahhoz nincs szükség API-kulcsra, hogy a felhasználó tartózkodási helyét tudd detektálni - az engedélyére viszont szükség lesz. Operában amúgy ez nem is működik.Na, de a lényegre térve: itt van egy elég jónak tűnő tutorial + demo: [link].
Meg itt v2-es API-t használva: [link].
DE a Gmap honlapján elég érthetők a példák, lásd a markers részt az options-ön belül: [link]options =
{
latitude: 47.58969,
longitude: 9.473413,
zoom: 10,
markers: [{latitude: 47.670553, longitude: 9.588479, html: "Tettnang, Germany"},
{latitude: 47.65197522925437, longitude: 9.47845458984375, html: "Friedrichshafen, Germany"}],
controls: ["GSmallMapControl", "GMapTypeControl"],
scrollwheel: false,
maptype: G_NORMAL_MAP,
html_prepend: '<div class="gmap_marker">',
html_append: '</div>',
icon:
{
image: "images/gmap_pin.png",
shadow: false,
iconsize: [19, 21],
shadowsize: false,
iconanchor: [4, 19],
infowindowanchor: [8, 2]
}
};Vagy másik példa: [link]
$("#map4").gMap({ markers: [{ latitude: 47.651968,
longitude: 9.478485,
html: "_latlng" },
{ address: "Tettnang, Germany",
html: "The place I live" },
{ address: "Langenargen, Germany",
html: "_address" }],
address: "Braitenrain, Germany",
zoom: 10 });Még bővebben:
$("#map4").gMap({ controls: false,
scrollwheel: false,
markers: [{ latitude: 47.670553,
longitude: 9.588479,
icon: { image: "images/gmap_pin_orange.png",
iconsize: [26, 46],
iconanchor: [12,46],
infowindowanchor: [12, 0] } },
{ latitude: 47.65197522925437,
longitude: 9.47845458984375 },
{ latitude: 47.594996,
longitude: 9.600708,
icon: { image: "images/gmap_pin_grey.png",
iconsize: [26, 46],
iconanchor: [12,46],
infowindowanchor: [12, 0] } }],
icon: { image: "images/gmap_pin.png",
iconsize: [26, 46],
iconanchor: [12, 46],
infowindowanchor: [12, 0] },
latitude: 47.58969,
longitude: 9.473413,
zoom: 10 }); -
Sk8erPeter
nagyúr
Hát akkor rosszul tudod. DE, kell. Mondjuk ezt könnyű lett volna kideríteni:
Google Maps JavaScript API v3 - Obtaining an API Key -
Sk8erPeter
nagyúr
válasz
Sk8erPeter #2408 üzenetére
Kipróbáltam az oldalt, amit linkeltél priviben, és jól tippeltem, az API-kulccsal van gond, úgy tűnik, a régiek helyett újat kell igényelni (most a v2 API-t deprecatednek minősítették, és a v3 használata preferált).
Amikor azt használom, ezt az üzenetet dobja alert() formájában:"A weboldalhoz másik Google Térkép API-kulcs szükséges. Új kulcs a(z)
http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#Obtaining_Key
címen generálható."Ezt úgy tudod Te is kipróbálni, hogy előveszel egy Chrome-ot, nyomsz egy F12-t, és a Console fülön egy az egyben bedobod a következőt, majd Enter:
function injectJavaScript( js_filename, id_of_script_tag ){
// include JS file
var headID = document.getElementsByTagName("head")[0];
var newScriptNode = document.createElement('script');
newScriptNode.type = 'text/javascript';
if(id_of_script_tag){
newScriptNode.id = id_of_script_tag;
}
newScriptNode.src = js_filename;
headID.appendChild(newScriptNode);
}
injectJavaScript('http://maps.google.com/maps?file=api&v=2&sensor=false&key=AIzaSyC06zy6NbowHE_GDOufLnWfWMdsjbOc-6E');Ebben benne van az az API-kulcs, amit a linkelt oldalon használsz.
-
Sk8erPeter
nagyúr
Ha új API-kulcsot igényelsz, ami a Google Maps JavaScript API v3-at használja?
-
Sk8erPeter
nagyúr
Ember legyen a talpán, aki ennyiből tud neked érdemben segíteni. Milyen blur effektről beszélsz, hol lehet megtalálni ezt a plugint, van rá valahol demo?
Itt vannak pl. effektek, ezek elég jófélék.
Mondjuk én őszintén szólva a leírásod alapján nem igazán tudtam kivenni, mi is a célod.
Hiába másolod be a kódod egy részét ide, ha ki se tudjuk próbálni, hogy is működik az, így segíteni sem egyszerű.Valami olyasmit akarsz kicsit érthetőbben megfogalmazva, hogy mondjuk egy modális dialógusablakban felpattan egy belépést elősegítő űrlap, és addig a háttérben az oldal legyen egy sötétített vászonszerűség előtt?
A modális dialógusablakokra bőven vannak példák, pl. ez: [link]. -
Sk8erPeter
nagyúr
válasz
wolandino #2399 üzenetére
Hmm, mondjuk sztem azért, mert előbb így írtam:
$(":input").on("click", function () {
// ...
});
viszont ide nem írtam selectort, az utóbbiba már igen:
jQuery("body").on("click", ":input", function () {
// ...
});Ja, amúgy jótanács, amivel időt spórolhatsz: ha van egy új kód, amit előbb tesztelni akarsz, úgy, hogy egyből lásd a hatását (egyáltalán jó-e, amit csináltál), anélkül, hogy fájlba kéne mentegetni, majd frissítgetni (olykor Ctrl+F5 nyomogatásával, hogy ne cache-ből kotorja elő), akkor pl. Chrome-ban nyomj egy F12-t vagy Ctrl+Shift+I-t, aztán kattints a konzol fülre, és ide egyből másold be az új kódodat, majd nyomj egy Entert, és itt általában egyből látható, működik-e a kód, vagy van valami szintaktikai vagy egyéb hiba. Ha itt írod meg a többsoros kódot (én is szoktam), akkor Shift+Enterrel tudsz sortörést belerakni, a normál Enter egyből elküldi.
-
Sk8erPeter
nagyúr
válasz
wolandino #2397 üzenetére
Szívesen!
.on()-nal akkor nyilván azért nem működött, mert az csak újabb jQuery-ben van; .delegate()-tel meg gondolom azért nem, mert nem nézted meg rendesen a meghívásának módját.
Elég hülye módon fel van cserélve a .live()-hoz képest:
tehát ez:
jQuery("body").on("click", ":input", function () {
// ...
});megfelel ennek:
jQuery("body").delegate(":input", "click", function () {
// ...
});.live()-val:
jQuery("body").live( "click", ":input", function () {
// ...
}); -
Sk8erPeter
nagyúr
válasz
wolandino #2394 üzenetére
Akkor próbáld meg azt, hogy így átírod:
$(":input").click(function () {
// ...
}HELYETT
$(":input").on("click", function () {
// ...
});Fontos: az .on() függvény a jQuery 1.7-es verziójától él.
Ez jól összefoglalja a változásokat:
$(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+ -
Sk8erPeter
nagyúr
válasz
wolandino #2392 üzenetére
Akkor fordulhat elő ilyen, ha
1.) több HTML-elemnek ugyanaz az id-je (kerülendő)
2.) dinamikusan hozzáadott elemek id-jára hivatkozva kötsz az adott elemre eseménykezelőket, ilyenre való az .on() függvény (korábban .delegate(), .live(); ennek lényege, hogy jövőben várhatóan létrejövő elemekre is tudsz eseménykezelőket kötni).
3.) szintaktikai hiba
4.) ..... stb.Ha konkretizálod a példát úgy, hogy egy leegyszerűsített változatot felraksz jsfiddle-re, konkrétabban is fogunk tudni segíteni.
-
Sk8erPeter
nagyúr
válasz
BullZeye #2390 üzenetére
Nem tudom, nálad miért nem működik a korábbi kód, pedig pontosan megfelelt annak a specifikációnak, amiről írtál, ki is próbáltam a gyakorlatban, nálam azt csinálta, amit szerettél volna.
Egyébként nem tudom, mi a nehezen átlátható benne, szerintem a kód magáért beszél, beszédes változóneveket is használtam direkt."Kijelöli ugyan a 720p torrenteket, de párat pirossal, párat zölddel, és semmi összefüggés nincs köztük, vagyis én nem vettem észre"
Most direkt rákerestem a "Family Guy" szavakra a megfelelő helyen, és pontosan azt csinálja, amit leírtál, hogy szerettél volna...A táblázatban páratlannak megfelelő sorokat pirosas színnel jelöli ki, a párosakat zölddel. De most lehet, hogy te azt akartad volna, hogy a találatok közül válassza szét a páros-páratlanokat, és annak megfelelően színezzen? Mert rohadtul nem azt mondtad....
"hisz amit sokan letöltöttek azt ki se jelöli, meg ilyenek."
Itt miről beszélsz, beszélj már világosan, mert én nem értem. Mikor volt szó arról, hogy a sokat letöltött torrenteket jelölje már ki? Ugyan milyen szűrőt akarnál erre tenni? Ezt korábban még csak nem is említetted, hogy erre rá lehessen keresni.Elmondom, mit kértél zanzásítva: a táblázatban lévő páratlan sorokat jelölje ki az egyik színnel, a párosakat másikkal, de ezeken belül csak azokat színezze be, amely találatok nevében benne van a "family guy" és a "720p".
Pont ezt csinálja, attól még, mert nem tudtad normálisan megfogalmazni, mit szeretnél, nem az én kódom a hibás.A második kérdésre:
"Az a Cati meg testvér elem, szóval nem egymás alatti dolog, hisz a 2 TD teljesen egyenrangú, abból ki lehet indulni?"
Igen, épp ezt magyaráztam, hogy a cati osztályú td elem testvéreleme az, amin belüli <a> taggel rendelkező elemet keresed, és mint a kódból látható, ki lehet belőle indulni.Ezt is kipróbáltam, létrehoztam egy ilyennek megfelelő táblázatot, ha nálad nem működik, akkor annak már tényleg nem tudom, mi az oka...
-
Sk8erPeter
nagyúr
válasz
BullZeye #2388 üzenetére
Láttad a korábbi hsz.-t, amit még szintén neked címeztem?
Újabb kérdésre:
ott van a "cati" classname-mel rendelkező <td> elem még azelőtt. Ezért én abból indulnék ki, hogy ennek a <td> testvérelemén belül keresed az <a> taget.
Innen szedtem egy next() függvényt.
Ezek alapján a kód:
function next(elem) {
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType != 1);
return elem;
}
var elementsWithCatiClass = document.getElementsByClassName('cati'),
nextElement = null,
elementsNeeded = [];
for( var i = 0; i < elementsWithCatiClass.length; i++ ){
nextElement = next( elementsWithCatiClass[i] );
elementsNeeded[i] = nextElement.getElementsByTagName('a');
}Itt az elementsNeeded tömbbe gyűjtjük az említett elemeket.
A for cikluson belül persze csináld ezekkel az elemekkel azt, amit szeretnél.
Kipróbáltam, működik.
Új hozzászólás Aktív témák
- Notebook hibák
- Témázgatunk, témázgatunk!? ... avagy mutasd az Android homescreened!
- Linux kezdőknek
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Samsung Galaxy A56 - megbízható középszerűség
- Abarth, Alfa Romeo, Fiat, Lancia topik
- Anglia - élmények, tapasztalatok
- Tesla topik
- Gaming notebook topik
- PlayStation 5
- További aktív témák...
- iPhone 12 Pro 128 Gb Graphite Szép Állapot Gyári Doboz Gyári Kábel 2db Eredeti Spigen Tok
- Apple iPhone 14 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 14 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo Thinkpad L560 & L570 T440P T540p T430, T420 T410 eredeti akkuk
- Asus RTX 3050 8GB /Jótállással!/Dobozos!/Posta ok!
- Új és újszerű 17.3" Gamer, irodai, üzleti készülékek nagyon kedvező alkalmi áron Garanciával!
- GYÖNYÖRŰ iPhone 12 mini 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS2955
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- HIBÁTLAN iPhone 13 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3033, 100% Akkumulátor
- BESZÁMÍTÁS! Microsoft XBOX One S 512GB lemezes konzol + 6db játék garanciával hibátlan működéssel
Állásajánlatok
Cég: FOTC
Város: Budapest