- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Asszociációs játék. :)
- Lalikiraly: SÜNI energiaital.
- sziku69: Fűzzük össze a szavakat :)
- Magga: PLEX: multimédia az egész lakásban
- Brogyi: CTEK akkumulátor töltő és másolatai
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Szólánc.
- Azonos árketegóriájú (105-110.000 Ft-os) relatív olcsó telefonok kamerái
- Tomasz72: Ventilátor upgrade
-
LOGOUT
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
-
martonx
veterán
"Szvsz semmi értelme folyamatosan felszállni bármilyen hype vonatra" - köszi a helyesbítést.
Igen ez általánosan is igaz, és nehogy félreértsétek, ez nem azt jelenti, hogy ragadjunk a múltban, és soha ne próbáljunk ki semmi újat.
Egyszerűen csak egy idő után, mikor az ember már eleget látott, többet ráadásul újra és újra, akkor kialakul egyfajta "lényeglátás", amivel meg kell tudni különböztetni, hogy akkor ez most egy normális trend, és valóban előre visz, vagy csak egy újabb hype, amit valami eleve rossz irányra adott, szintén nem feltétlenül jó választ szült.
Azt látom, hogy a fentiekben a js világ (átvéve a szerepet a php-tól) jelenleg világelső. -
martonx
veterán
ASP.Net Core-ban is biztosan van: [link]
Szvsz az SSR-nek nagyobb a füstje, mint a lángja, vagy inkább fából vaskarika, ha már server side prerendering kell, akkor megette a fene az egészet, és erősen megkérdőjeleződik, hogy van-e értelme az adott projekten SPA-zni.
Azaz ha szerver oldalon akarsz renderelni, akkor - most tessék megkapaszkodni - azt megírhatod bármilyen klasszikus szerver oldali nyelven, bármilyen rendering engine-el, ahogy az az elmúlt évtizedekben szokás volt. De ez csak a magánvéleményem.
A történelem ismétli önmagát (de js-ben ennyire gyorsan???). Először minden szerver oldalon renderelődött, a js-csak némi cukormáz volt. Aztán jöttek a js heavy SPA-k, jaj szerver oldalon fúj, ne rendereljünk semmit, mert az olyan oldschool, meg fúj, meg ugyanmár. Aztán kiderült, hogy annyira azért még se volt hülyeség a szerver oldali rendering, de akkor már nehogy visszatérjünk a szerver oldali renderinghez, hanem oldjuk meg, hogy az SPA-nk renderelődjön szerver oldalon
Szvsz semmi értelme folyamatosan felszállni a js világban száguldozó hype vonatokra. -
Zedz
addikt
SPA-khoz SSR általában csak nodejs-ben oldható meg?
-
jbauer05
tag
Üdv mindenkinek!
Egy digitális tananyag "indító weblapját" próbálom gatyába rázni. A probléma a következő:
A tananyagot indító weblap javascriptet tartalmazó kódjai csak akkor működnek, ha be van rakva a lemez a meghajtóba, merevlemezről nem indul el. Meg lehetne buherálni ezt valahogy, mert elégé sziszifuszi munka egyenként törölni és átírni az ilyen sorokat, és hátra van még vagy 10 ilyen tananyag. Előre is köszönöm !
Link -
disy68
aktív tag
-
Janaboy
veterán
Köszi, sajnos nem sikerült úgy működésre birni, ahogy én gondoltam.
Nekem lényegében egy inditó ikon kellene, ami adott méretben megnyitna egy webolda.t
Sajnos ez azért kellene, mert két monitors rendszerben nem lehet fullscreenre tenni böngészőt, csak max egy megadott méretet lehet használni.
-
-
PumpkinSeed
addikt
Mi a legjobb megoldás a felhasználó viselkedésének nyomon követésére? Meg kellene oldanom, hogy ha átméretezi az ablakot, copy&paste-el, illetve a form kitöltését az első betűtől a submit-ig mennyi idő telt el. Alap Javascript-el meg is tudom, de kíváncsi vagyok a tökéletes megoldásra. Van valami útmutatás amit elolvashatok erről? Az API adod, már csak a front-end kell hozzá.
-
Janaboy
veterán
Néztem, aha, közben megtaláltam amit korábban..
Igy néz ki:
var navOpenInBackgroundTab = 0x1000;
var oIE = new ActiveXObject("InternetExplorer.Application")
oIE.Navigate2("http://google.com");
oIE.Visible = true;
oIE.left = 0;
oIE.top = 0;
oIE.height = 700;
oIE.width = 400;Ez igy optimális? vagy van ettől jobb?
-
Hunmugli
aktív tag
Üdv!
Enyhe problémába ütköztem. Van ez az oldal [link], ahol különböző dolgokat tanítanak meg rajzolni. A baj az, hogy ha oda irkálom a dolgokat, akkor persze kirajzolja a négyzetet/akármit, de szeretném ezt ettől az oldaltól függetlenül is gyakorolni.
És már több mindent is kipróbáltam, de ötletem sincs, hogy mit kéne csinálnom. Az alábbi kódból hogyan lesz egy négyzet?:
<script type="text/javascript">
c.fillRect(20, 30, 45, 45);
</script>Gondolom le kell rakni egy megfelelő c objektumot, csak ezt már nem írták le
-
Janaboy
veterán
Sziasztok,
Egy olyan kis javascriptre lenne szuksegem, amely internet explorerben megnyitna egy weboldalt a kepernyo 0 0 poziciojarol egy megadott ablak meretben.
.top es .left 0 ezek mar megvannak, de a meretezes nem akart osszejonniElore is koszi,
Udv -
Con Troll
senior tag
Sziasztok!
2 függvény futtatására lenne szükségem késleltetve. Ezzel a megoldással próbálkoztam, de így csak az első fele fut le (az átirányítás):
javascript:
window.setTimeout(function red()
{window.location="https://www.xy.nz";},5000);
window.setTimeout(function elf()
{document.getElementById("radio").checked=true;
document.getElementById("rad2").checked=true;
document.getElementById("Form").submit()},6500)()Amit el szeretnék érni: a script indítása után 5 másodperccel irányítson át az xy.nz oldalra (eddig működik), majd már az átirányított oldalon 6,5 másodperc után fusson le a többi része a scriptnek.
Mit csináltam rosszul, hogyan kéne jól?
Nem tudom, hogy ez kivitelezhető-e egyáltalán.Köszönöm!
-
DarkByte
addikt
Javascript-ben ha a this-re csinálsz promise-t akkor [link] ?
(magamtól is megtalálom a kijáratot
)
-
Zedz
addikt
ES2015-tel hogy illik ajax kéréseket intézni? Ideje fetch() apit használni, vagy a jó öreg xmlhttprequestet?
-
Con Troll
senior tag
válasz
Con Troll #6370 üzenetére
Még egy olyan kérdésem lenne, hogy ezt a 2 scriptet hogy tudom egymásba "fűzni"?
Tehát, hogy ne 2 külön kódot kelljen lefuttatni, hanem csak egyet, ami mindkét utasítást tartalmazza.javascript:(function a(){document.getElementById("termsAccept").checked=true;})()
javascript:(function b(){document.getElementById("summaryForm").submit();})() -
Con Troll
senior tag
válasz
fordfairlane #6369 üzenetére
Nagyon szépen köszönöm, működik!
-
Con Troll
senior tag
válasz
Con Troll #6364 üzenetére
Közben leszűkült a probléma, már csak az automatikus gomb kattintásban kérnék segítséget, mert ezt nem tudom összehozni valamiért. (Az oldalhoz csak mint külső felhasználó férek hozzá).
Ezzel próbálkoztam, de nem működik.
javascript:(function(){document.getElementsByClass("emg-button emg-btn-huge btn-submit").click;})()
A kérdéses gomb, amit le szeretnék "klikkelni" az alábbi képen van kijelölve:
Hogy tudnám ezt kivitelezni?
-
martonx
veterán
válasz
PumpkinSeed #6365 üzenetére
Ehhez egy szimpla functiont csinálnod bőven elég, hívjuk mondjuk getDataFromServer-nek. Átadod neki az url-t http method-ot, paramétereket, a function-ön belül meg megoldod a megfelelő headerek beállítgatását (már persze ha erre szükség van mondjuk autentikáció miatt), és a function visszaad egy promise-t.
Aztán getDataFromServer(myurl, "POST", {myparam: param}).then() módon bárhol tudod a kódodból használni.
-
Jim-Y
veterán
válasz
PumpkinSeed #6365 üzenetére
Mármint mit lenne érdemes csinálni?!
-
Con Troll
senior tag
Sziasztok!
Egy olyan scripttel ügyködöm, amit Google Chrome könyvjelzőbe illeszthetek, és egy adott oldalon az alábbiakat végzi el, ha rákattintok a "könyvjelzőre":
-bepipál 2 megfelelő checkboxot és
-rákattint a tovább gombraGoogle kereséssel eddig jutottam, ez működik is:
javascript: (function(){document.getElementById("termsAccept").checked=true;})()
De innen nem tudok tovább menni, ebben kérném a segítségeteket.A még szükséges checkbox, amit be kell pipálni, illetve a tovább gomb adatai a forráskód alapján: /pastebin/
Remélem, ami fontos, azt csatoltam. Köszönöm előre is a segítségeteket!
-
Jim-Y
veterán
válasz
PumpkinSeed #6362 üzenetére
jQuery - AJAX
Mármint tényleg, ha nem kell semmilyen FE framework akkor jQuery és kész
Vagy csak simán fetch polyfill és akkor még a jQuery sem kell.
-
PumpkinSeed
addikt
Van egy api.domain.com aloldal, ahol RESTful API megy Go-ban. Mi a legjobb framework arra, hogy ezt front-end oldalon fogyasszam? Nem nagyon látok rá erre, de a React illetve ilyen framework-k azért nem jók nekem, mert nem erre vannak kitalálva ha jól látom. Nekem olyan framework kell, ami semmit nem csinál, csak adatot szed le az API-ból.
-
Zedz
addikt
Sziasztok,
Socket.io-ban tud valaki segíteni?
-
Aureal
őstag
-
dqdb
nagyúr
Igen, meglehetősen egyszerű volt megtalálni:
1. megnyitottam az oldalt, majd utána a Developer Tools-t a Ctrl+Shift+I megnyomásával, ott Network fül
2. gépeltem a mezőbe, és láthatóan nem volt hálózati forgalom, így egyértelművé vált, hogy a teljes lista lejön, nem a szervert használja a találatok szűkítéséhez
3. mivel az ilyen típusú adatokat általában külön fájlban szokták letölteni, ezért első tippre bekapcsoltam az XHR-re szűrést, és újratöltöttem az oldalt
4. megjelent a listában a productselector/ sor, így itt véget ért a keresgélés, nem kellett a sokkalta hosszabb JS listát végigbogarászni -
Zedz
addikt
VueJS-sel szórakozott már itt valaki?
-
Aureal
őstag
Ezen az oldalon lennék kíváncsi, hogy ha beírom a keresőbe, hogy: MG, az milyen listából olvassa be az aktuális terméktípusokat? (A lista tartalmát szeretném megkapni vagy vágólapra helyezni csak nem tudom hol lehetne rátalálni akár a böngi betöltött fájljai közt is...)
-
Zedz
addikt
Sziasztok!
Mivel illik mostanában "real-time" webes dolgokat csinálni? Pl. jó még a polling, vagy websocket, 3rd party dolgok.. stb.
-
Panhard
tag
Sziasztok!
Az miért van, hogy ez az egyszerű kis kód minden böngészőben fut, kivétel Safari és Internet Explorer?<html><head><title></title></head><body bgcolor=#222222 onload="Getdata()">
<script>
var szaml = 0;
function Getdata(){
szaml ++;
document.getElementById("egy").innerHTML = 123;
document.getElementById("ketto").innerHTML = 456;
document.getElementById("harom").innerHTML = szaml;
document.getElementById("negy").innerHTML = szaml+1;
setTimeout('Getdata()', 500);
}
</script>
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<text id="egy" x="10" y="30" style="font-size: 20; fill:#ffffff">xx</text>
<text id="ketto" x="10" y="50" style="font-size: 20; fill:#77ff99">xx</text>
<text id="harom" x="10" y="70" style="font-size: 20; fill:#ff4499">xx</text>
</svg>
<br><Font id="negy" size= "4" color="#aaaaaa">xxx</Font><br>
</body></html>Ebben a két böngészőben az SVG részen belül a text-hez nem tudja hozzárendelni az értéket? Vagy mitől lehet?
-
sztanozs
veterán
válasz
Mr Dini #6340 üzenetére
syntetic sugar:
var DATA = '';
function getPage(url) {
http.request.get(url).then(function (response) {
DATA = response;
console.log(response);
})
}
getPage('http://akarmi/');
while(DATA === '');
alert(DATA);Amúgy nem értem miért nem lehet az egész feldolgozást a then-be rakni, azt kész...
-
fordfairlane
veterán
válasz
Mr Dini #6340 üzenetére
Még mindig nem értem, miért ilyen elképesztően fontos ez a globális változó, mintha anélkül nem lehetne programot írni.
-
-
Jim-Y
veterán
válasz
Mr Dini #6338 üzenetére
Egyetlen egy dolog ami hatraltat teged, hogy foggal korommel ragaszkodsz ahhoz, hogy "fusson le a getPage es az eredmenyt irja bele a DATA valtozoba". Amit nem latsz at, hogy lehet olyan kodot irni, ami az eredmenyt beleirja egy globalis valtozoba, de te azt nem fogod tudni, hogy mikor tortent meg, mert az a valtozoba iras majd valamikor a jovoben fog megtortenni addig a kodod fut tovabb
Szerintem ezt mar nem lehet tovabb ragozni, nem akarsz lathatoan utanaolvasni a dolgoknak, es most felre fogod dobni a nyelvet, mert nem tudsz valamit megcsinalni, sajat hibadbol, mert kb 15perc olvasassal mar vilagos lenne szamodra is, hogy mit hibazol el.
/* 1 */ function getPage(url) {
/* 3 */ http.request.get(url).then(function (response) {
/* 5 */ DATA = response;
/* 6 */ console.log(response);
})
}
/* 2 */ getPage('asd');
/* 4 */ alert(DATA); -
Értem. Szerintem előkeresem a fehér zászlót, mert sajnos azt, amit konkrétan meg szerettem volna csinálni, azt function-ökön keresztül nem lehet megoldani sajnos. Vagy ha igen, akkor számomra csúnyán csak. Azt meg nem szeretném, hogy van egy kód, amit pár hét után előveszek és csak pislogok, hogy mivaaan!?
Php és curl azért nem megoldás, mert ahogy mondtam, ez egy Android/iOS appnak indult, nativescript-tel. Csak, ha ezt tudom, nem szenvedek el feleslegesen két napot a GUI gyártással...
A vége mégiscsak az lesz, hogy java-ban írom meg és csak androidra!
Köszi mindent Nektek, rendkívül tanulságos volt ez a lecke!
-
CSorBA
őstag
válasz
Mr Dini #6336 üzenetére
A function is kód.
De sejtem mire gondolsz és akkor valami ilyesmi kell neked:
getPage('http://page1.hu').then((html) => doWhateverYouWantWithPage1(html));
getPage('http://page2.hu').then((html) => doWhateverYouWantWithPage2(html));
getPage('http://page3.hu').then((html) => doWhateverYouWantWithPage3(html));
function doWhateverYouWantWithPage1(html) {
// code1
}
function doWhateverYouWantWithPage2(html) {
// code2
}
function doWhateverYouWantWithPage3(html) {
// code3
}Sokáig lehet ezt ragozni, de más megoldás erre nincs, a JS így működik. És azt is elhiheted, hogy ez a logikus és átlátható mód. Ha nem tetszik, akkor csinálhatod PHP-val és CURL-el mondjuk.
-
Köszi!
És ha a
doWhateverYouWantWithHTML
nem function, hanem kód? Mert pont ez a problémám. Nem csak egyszer, egy link esetében szeretném feldolgozni az adatokat, hanem több helyen. Ahol mindegyik linknek más a kódja, tehát másnak kell lefutnia. Amit nem tudok function-be tenni... Konkrétan pl replace-t, vagy splitet szeretnék a változókon végrehajtani.Nem akarom én ezt túlbonyolítani... A lényeg, hogy van egy függvényem, annak küldök egy linket, majd egy DATA változóban visszatér a HTML kódja az adott oldalnak. Erről a HTML oldalról pedig megint leszedek egy link HTML-t, azt is feldolgozom stb...
Ja és van amikor a több link közt case-t is használok, hogy eldöntse a forráskód alapján, hogy éppen melyiket kell használnia... Namost ezt egy functionbe beilleszteni átláthatatlan lenne és újra kéne írnom a már xhr sync-kel működő viszonylag hosszú kódot.
-
CSorBA
őstag
válasz
Mr Dini #6334 üzenetére
De a JavaScript nem így működik. A JS egy szálon fut. Ha valami külső dologra (async) kell várnia, akkor nem állhat le. Ugrik a következő sorra. Hát gondolj bele, ha valami hiba történne, vagy lassú lenne a net, akkor addig állna, míg be nem tölt valamit? És az állt úgy kell érteni, hogy addig semmit sem tudsz csinálni. Épp ezért egy ilyen asyncron kérés visszatér egy promissal, ami ha resolválódik. (Teljesül az ígéret) akkor meghívja a jövőben azt a függvényt, ami erre várt.
Az általad hozott példát valahogy így lehetne használni:
function getPage (url) {
'use strct';
return new Promise((resolve, reject) => {
const httpLibrary = url.startsWith('https') ? require('https') : require('http');
httpLibrary.get(url, (response) => {
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
}).on('error', (error) => {
console.log('Error!', error.message);
});
});
}
getPage('http://vanenet.hu').then((html) => doWhateverYouWantWithHTML(html));
function doWhateverYouWantWithHTML (html) {
console.log(html);
}A doWhateverYouWantWithHTML-be írod amit szeretnél csinálni, és ez akkor hívódik meg, mikor betöltődött sikeresen a page, amivel meghívtad a getPaget.
Szerk.: De ahogy látom Jim-Y fórumtárs is erre próbált fentebb rávezetni, egy hasonló példával.
Tényleg olvasgass a témában, nem feltétlen egyszerű, de mindenkinél van egy pillanat mikor átkattan és megérti. -
De én pont nem ezt szeretném. A függvény csak "kódrövidítés" szempontjából lenne szükséges. És nem a függvényen belül szeretném az adatokat kiíratni, hanem "kint".
Illetve nem alerteket, hanem elég hosszű replace-ket regex-ekkel használnék...
S ezt a getPage-t én csak a HTML kód leszedésére használnám. Nem egyszer, hanem sokszor a kódban...
Egyébként kinek az ötlete volt egy get kérést aszinkronnak keresztelni? Ott a legtöbb esetben pont az a lényeg, hogy megvárja, míg végez a letöltés... És ez eddig minden programnyelvben, amivel eddig találkoztam mind így volt. De ha callbackkel meg lehet csinálni, kérem valaki dobjon már össze egy példát nekem, ami stimmel a leírásomra! Nagyon hálás lennék!
-
CSorBA
őstag
válasz
Mr Dini #6332 üzenetére
Sajnos nem érted, amit itt többen is írtak.
A .then callbackjében lévő rész egész egyszerűen később fut le, mint az alerted. Ezért az alertedben soha sem fogod elérni. Ha csinálnál egy függvényt, amibe berakod az alertet és azt hívod meg a .then callbackjében, akkor már megy, hiszen ez akkor hívódna meg, mikor már az async műveletnek van eredménye.
-
Egyébként hogy lehet az, hogy a console.log(str); kiírja a HTMl kódot itt, de a DATA globális változóba már nem tudja belementeni?:
var DATA = '';
function getPage(url){
var http = require("http");
content = http.request({ url: url, method: "GET" }).then(function (response) {
str = response.content.toString();
console.log(str);
DATA = str;
}, function (e) {
alert("Error!");
});
}
getPage('http://vanenet.hu');
alert(DATA);Na, itt az utolsó
alert(DATA);
már üres...#6331
Nem, nem használok express-t. Sima nativescript.
-
válasz
fordfairlane #6329 üzenetére
Próbáltam már azt is, de nem megy fel rendesen:
g
yp info spawn args '-Goutput_dir=.' ]
gyp: binding.gyp not found (cwd: /home/Pisti/Asztal/testing) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/node-v4.6.1-linux-x64/lib/node_modules/node-gyp/lib/configure.js:305:16)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.4.0-45-generic
gyp ERR! command "/usr/local/node-v4.6.1-linux-x64/bin/node" "/usr/local/node-v4.6.1-linux-x64/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/Pisti/Asztal/testing
gyp ERR! node -v v4.6.1
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not okÉs meghal a telepítés...
-
fordfairlane
veterán
-
Adatokat szeretnék kinyerni egy HTML kódból, aki dinamikus és egy szerveren futó php rakja össze.
Pl időjárási adatokat szeretnék leszedetni és feldolgozni.
A többit meg már elmondtam. Lehet bármilyen a function, csak getPage('url');-lel lehessen meghívni és a DATA globális változóban adja vissza a html kódot. A kód nár működött xhr-rel, böngészőben, de a node -on nem akar menni a jóöreg xhr.
-
No, akkor másképp közelítem meg a dolgot!
Ma éjfélig kész kell lennem egy mindegy, h milyen, csak működő tákolmánnyal, ami fut androidon appként. A lényeg, hogy működjön, később majd úgyis faragok rajta. Meg egy droid appnál az a kis várakozási idő szerintem amúgy is belefér...
Olvastam valahol, hogy itt is lehet xhr-t használni. Ez érdekelne, de hogyan?
-
Köszi a válaszokat!
Értem is nagyjából, hogy mi a probléma, csak azt nem tudom, hogy akkor a parserem hogy rakjam össze, ami HTML kódokból olvas ki infókat... Ezt a http-sync-et meg nem lehet feltenni nativescript-re....
Szvsz, ez a kód működik, úgy gondolom innen kiindulhatnék, csak én ehhez kevés vagyok:
function getPage(callback){
var http = require("http");
content = http.request({ url: URL, method: "GET" }).then(function (response) {
str = response.content.toString();
console.log(str);
callback(str);
}, function (e) {
alert("Error!");
}); return(str);
}
var URL = 'http://www.vanenet.hu';
getPage(function(result){ alert(filmName +result);});Mint mondtam, csak annyit kéne rajta alakítani, hogy ne alertben dobja ki a forrást, ne is a konzolban, hanem a DATA változóban, amit utána a "fő szálon" lehetne parsolni. Meg hogy ne külön kelljen az URL-t deklarálni, hanem a getPage functionnel. Értsd:
getPage('http://valami url');
-
dqdb
nagyúr
válasz
Mr Dini #6321 üzenetére
Széllel szemben nehéz lesz
Az egész Node.js éppen az aszinkron működésre épít, így minden esetben, amikor nem aktívan dolgozol, hanem valami erőforrásra vagy eseményre vársz, legyen az hálózatról adat lekérése, fájl írása* vagy adatbázis-művelet, mindig egy callbackben kapod meg a végeredményt. Ennek az az oka, hogy a szinkron várakozás blokkol egy feldolgozószálat, és csökken a szerver feldolgozási képessége, míg aszinkron esetben az adott szál lazsálás helyett értelmes munkára is befogható, vagyis egy másik kérés feldolgozására. Most mondhatod, hogy de te ezt nem kérted, azonban azzal, hogy a Node.js alapon álltál neki, pont egy aszinkron, threadpool alapú hatékonyan skálázódó platformra esett a választásod, így vagy megszoksz, vagy megszöksz ...
Kókányolni
szerencséresajnos minden platformon lehet, így itt is, és valószínűleg ezt keresed (nem használtam soha, keresés dobta ki). De itt sem nem véletlenül kezdődik a leírás a Githubon elérhető legnagyobb betűméretű bekezdéssel, hogy miért ne használd ezt a libraryt.viszont gondolom node js-nél a CORS miatt nem megy
A CORS böngésző szintjén értelmezhető csak. A Node.js azért nem támogatja az XHR-t, mert saját API-ja van, nem a böngésző DOM modelljét másolja.* ebből kivételesen létezik szinkron API is, de ennek ellenére a aszinkron felület felé terelnek a hivatalos dokumentációban:
"In busy processes, the programmer is strongly encouraged to use the asynchronous versions of these calls."
-
Jim-Y
veterán
válasz
Mr Dini #6321 üzenetére
De ezt nem tudod megcsinalni, mert az asynchronous non-blocking I/O ahogy a javascriptet illetni szoktak lenyege pont az, hogy az async operationok nem blokkoljak a vegrehajtasi szalat. Magyaran, beallithatod te az XHR-t szinkronra, hogy amikor az mondod, hogy getPage(xyz) akkor az eredmeny rogton a DATA-ban legyen, de akkor az egesz javascript/nodejs filozofialval szembe mesz es amugy is ilyet nem csinalunk. Nem veletlenul minden async... Tenyleg javaslom hogy olvasgass kcsit a temaban, mert ugy tunik, hogy nem erted kristaly tisztan hogy hogy is mukodik a javascriptben az async.
Magyarazat:
a getPage belul egy requestet hasznal ami egy http keres lesz egy szerverre, amig erre a http keresre nem erkezik valasz addig NEM SZABAD blokkolni a stacket mert a javascript egy vegrehajtasi szallal (egy stackel) rendelkezik es minden UI is ezen "fut". Ha te egy szinkron kerest csinalsz, mint amit pont most szeretnel elerni akkor egez addig amig a tavoli szerver vissza nem ter addig SEMMIT sem tudnak a felhasznalok csinalni az oldaladon. Mondanom sem kell, hogy ez az egyik legnagyobb antipattern. Helyette aszinkron kell a tavoli szerver kerest kezelni. Vagyis... elinditod a kerest, majd rogton "visszaadod a vezerlest a fo szalnak" persze javascript eseten nincs ertelme ennek a mondatnak de igy konnyebb elkepzelni. Ami tenylegesen tortenik az az hogy amikor elinditasz egy requestet akkor a webapi regisztral egy callbacket amit tcp socket valasz eredmenyevel fog meghivni. Promiszok eseten a callback egy rezolvalt promis lesz.
-
Azt szeretném elérni, hogy ha bárhol kiadom a kódban a
getPage('http://urlcím');
-et, akkor a DATA globális változóban ott legyen az adott oldal forráskódja.Pl xhr, ami régen használtam, viszont gondolom node js-nél a CORS miatt nem megy:
var DATA = '';
function getPage(url){
http = new XMLHttpRequest();
http.open("GET",url, false);
http.send();
DATA = http.responseText;
} -
Jim-Y
veterán
válasz
Mr Dini #6319 üzenetére
Szia,
Ami neked kell az, hogy utananezz az aszinkronitasnak es a promisoknak javascriptben, mert igazabol ilyen jellegu a problemad.
Javascriptben a legtobb network hivas aszinkron, vagyis a hivas eredmenye valamilyen jovobeli idopontban lesz csak meg, es mivel a nyelv kornyezete tamogatja az ilyen jellegu hivasokat aszerint is kell kezelni oket. Ennek megkonnyitesere vannak a promisok amiket te mar hasznaltal is a kododban csak valoszinuleg rosszul.
az
alert(getPage(valami))
mar csak azert sem mukodhet, mert ezzel a sorral azt feltetelezed, hogy a getPage szinkron fuggveny pedig nem az!Pszeudokod:
function getPage(url) {
return http.request({ url: url, method: "GET" });
}
function yourLogic() {
const URL = 'http://www.vanenet.hu';
getPage(URL)
.then(function (response) { alert(response); })
.catch(function (err) { console.error(err); })
} -
válasz
Mr Dini #6318 üzenetére
Még így sem megy:
var DATA = '';
function getPage(url){
var http = require("http");
content = http.request({ url: url, method: "GET" }).then(function (response) {
str = response.content.toString();
console.log(str);
DATA = response.content.toString();
}, function (e) {
alert("Error!");
}); return DATA;
}
alert(getPage('http://www.vanenet.hu/'));Egyedül a callbackes megoldásom működik rendesen:
function getPage(callback){
var http = require("http");
content = http.request({ url: URL, method: "GET" }).then(function (response) {
str = response.content.toString();
console.log(str);
callback(str);
}, function (e) {
alert("Error!");
}); return(str);
}
var URL = 'http://www.vanenet.hu';
getPage(function(result){ alert(filmName +result);});Viszont én meg nem szeretném ezzel a function(result)...-tal meghívni a függvényt, hanem annak a helyére a linket szeretném megadni és azt szeretném, ha a DATA változóban lenne a HTML kód.
Egyébként node JS-t használok.
Már a hajam égnek áll ettől!
-
Üdv!
Kezdő kérdésem lenne... Mégpedig van egy ilyen functionom:
function getPage(url){
var http = require("http");
content = http.request({ url: url, method: "GET" }).then(function (response) {
var str = response.content.toString();
console.log(str);
}, function (e) {
alert("Error!");
});
}Namost, azt szeretném, hogy ha így meghívom:
alert(getPage('http://bing.com'));
akkor térjen vissza az oldal HTML kódjával. Namost, a
console.log(str);
miatt megkapom a konzolban a kódot, de nem tudom, hogy kéne a return-t berakni, hogy az alert is kiírja a kódot....Tudbátok segíteni?
Köszi!
-
disy68
aktív tag
válasz
Keeperv85 #6315 üzenetére
Üdv, egy regex-es lehetőség:
A String.prototype.replace(regex, replacerFunction)-t használva elég egyszerű lesz a dolog. A regexet megírod úgy, hogy lesz 3 capture group (url eleje a számig, szám, többi). A replacerFunction-ben pedig növeled a számot és összefűzöd a 3 részt az növelt számmal.
regex:
/^(http[s]?:\/\/[^\/]+\/[^\/]+\/[^\/]+\/)(\d+)(\/.*)/
replacerFunction:
var increasePart = function (match, firstPart, numberAsString, lastPart) {
var increasedNumber = parseInt(numberAsString) + 1;
return firstPart + increasedNumber + lastPart;
} -
Keeperv85
nagyúr
Sziasztok!
Remélem jó topicban...
Adott egy Greasmonkey script, ami most így néz ki:
// ==UserScript==
// @name Clixgrid ads
// @namespace sdsd
// @include *http://www.clixsense.com/en/ClixGrid-Play_the_Game*
// @version 1
// @grant none
// ==/UserScript==
flag=0;
document.hasFocus = function () {return true;};
setTimeout(function(){document.getElementById('frm').src=""},0000);
reld();
function reld(){
var im=document.getElementsByTagName('img');
for(i=0;i<im.length;i++){
if(im[i].src=='http://csstatic.com/img/tick48.png'){
st=window.location.href;
num=st.substring(st.lastIndexOf('/')+1,st.lastIndexOf('?'));
num=(num>=20?1:++num);
str=num+st.substring(st.lastIndexOf('?'));
flag=1;
window.location.href=str;
break;
}
}
if(flag==0){
setTimeout(function(){reld()},4000);
}
}Előrevetítem, hogy életemben soha sem írtam ilyen scriptet még, szóval lehet triviálisnak tűnik a kérdés majd....
Ez ugye az include alatti címen lévő játékot automatizálja, tehát magától kattintgat.... Csakhogy ez így már nem jó, mert 30-ra nőtt a lehetőségek száma (alap esetben), de a sorok száma csupán 20, így a végén mindig kihagy 10-et.
Eddig azt csinálta ugye a script, hogy, ha pl az URL:
http://www.clixsense.com/en/ClixGrid-Play_the_Game/2/2?8732697
...akkor a kiemelt számra állva elindult és azt növelte 20 lépésen át....
Most azt szeretném, hogy az az előtti, tehát az oszlopsorszámot növelje, ezt:
http://www.clixsense.com/en/ClixGrid-Play_the_Game/2/2?8732697
Ám olybá tűnik hülyének bizonyultam ehhez, mert 2 nap szívás után sem sikerül... A pozíciót megtaláltam, csak nem kicseréli a számot az én verzióm, hanem oda írja be az újat, amit szintén nem jó...
Légyszi segítsen valaki!
Köszi!
-
PumpkinSeed
addikt
válasz
fordfairlane #6313 üzenetére
Ez igen, erre se jöttem volna rá, köszi érte.
-
fordfairlane
veterán
válasz
fordfairlane #6312 üzenetére
function addSchool() {}
ugyanaz, mint
var addSchool = function() {}
A function-on belül első hívásnál az első sor a függvény referenciáját felülírja, így másodjára már nem tudod meghívni.
-
fordfairlane
veterán
válasz
PumpkinSeed #6311 üzenetére
Mert ugyanolyan nevű globális változót használsz a függvényen belül objektumreferencia tárolásra, mint ami a függvényed neve.
-
PumpkinSeed
addikt
Az mitől van, hogy van egy függvényem, amiben ennyi van:
function addSchool() {
addSchool = document.getElementById('add-schools');
schools = document.getElementById('schools');
schoolList = document.getElementById('school-list');
}Ezt egy onClick eseményre tettem. Amikor elsőnek rákattintok, probléma nélkül lefut. Mikor másodjára kattintok akkor ezt a hibaüzenetet kapom:
Uncaught TypeError: addSchool is not a function
-
SaNyEe
aktív tag
válasz
martonx #6309 üzenetére
Valószínű nem volt jó valami abban a dom-nak, hogy csak belehánytam a resultot a html részébe.
Kicsit módosítottam a betöltést:$.ajax({url: "index.php", method:"post", data: {func:'ajax',module:'register',request:'new_instance'},
success: function(result){
$("#page_modul_container").html("");
$('<div></div>').html(result).appendTo('#page_modul_container');
}});Így működik, igaz most van egy extra divem, de ezzel szerintem tudok élni
Azért írtam a scriptet a kódrészbe, mert "önmagukban teljes" osztályokat írok modulonként.
Írhatnám külön script fájl(ok)ban is és linkelhetném a head részben ez igaz, de ezt a módszert választottam -
SaNyEe
aktív tag
Sziasztok,
Kérdésem lenne Jscript+HTML+Ajax kombó témában, lehet béna, de ez van
Adott egy HTML oldal <html>-től</html>-ig.
Ajax hívásokkal ezen oldal egy részét cserélem, a cserélendő tartalom a <div id=page_modul_container">-ben van.Amikor cserélek az így történik:
$("button").click(function(){
$.ajax({url: "index.php", method:"post", data: {func:'ajax',module:$(this).attr('id'),request:'new_instance'},
success: function(result){
$("#page_modul_container").html(result)}});
});A betöltött tartalmon a <script> részeket mindig a html kód végén helyezem el, így működnek.
A problémám az, hogy amikor a beszúrt kódból próbálok kimutatni az eredeti részre az nem működik, a beszúrt tartalom nem "lát" a <div id=page_modul_container"> dom elem szintjére fel.
Ezen hogy lehetne segíteni? -
Hunmugli
aktív tag
Igazad volt
Már értem miért nem jó a document.write()
De aconsole.log()
-os megoldás sem az igazi - nem sok olyan honlapot látni, ahol a konzolt kell nézegetniAmíg nem tudok jobbat, a fenti megoldást fogom használni. Az html tageket is tud értelmezni
-
CSorBA
őstag
Szerintem ennél a property-s checkolásnál az Object.keys egy array mappel átláthatóbb és egyszerűbb, persze csak ha nem kell IE8:
var result = [];
Object.keys(data).map(function(value, index) {
result[index] = data[value];
});var data = {
d0: "zero",
d1: "one",
d2: "two",
d3: "three"
};esetén:
console.log(result); // Array [ "zero", "one", "two", "three" ]
-
disy68
aktív tag
válasz
Panhard #6302 üzenetére
Ennél a megoldásnál téged nem érdekel pontosan mennyi mezője van a data objektumnak. Végigmész az összesen, ellenőrzöd, hogy saját mezője-e, majd a kapott értéket a mező nevéből származó index-szel berakod egy tömbbe.
Egy egyszerű minta: fiddle. Egy kicsit korrektebb: változat.
"Az én megoldásomnál az lehet a hiba, hogy a "data.d0" objektumot String-ként hozom létre, és azt nem tudja értelmezni?"
Bizony, a legfőbb hiba ez. A másik, hogy nem rugalmas a megoldás, hiszen mi van, ha már nem 90 elemet kell feldolgozni?
Ha errefelé mennél mégis, amit nem ajánlanék, akkor valahogy így módosulna a fenti egyszerű példa.
A lényeg:
var arr = []; // eredmény
for (var i = 0; i <= 90; i++) {
var key = "d" + i;
arr[i] = data[key]; // a data objektum adott d0 .. d90 elemét így tudod megcímezni
} -
Panhard
tag
Köszi, de nem nagyon értem.
Ennél a megoldásnál is csinálnom kell egy for ciklust, ami 90-szer fut le? Annak a változóját hova kell betennem?
Az én megoldásomnál az lehet a hiba, hogy a "data.d0" objektumot String-ként hozom létre, és azt nem tudja értelmezni?Most vetem észre, hogy az első hozzászólásomban elírtam egy változó nevét. Így a helyes ahogy próbáltam:
for(var i=0; i<91;i++){
var ertek = "";
ertek += "data.d";
ertek += i;
eredmeny[i] = ertek;
} -
disy68
aktív tag
válasz
Panhard #6300 üzenetére
A data objektum mezőin kell végigmenned és azok értékeit menteni a tömbbe.
for (var property in data) {
if (data.hasOwnProperty(property)) {
// put in array: data[property]
}
}A mentéshez használhatsz egy sima változót, amit közben növelgetsz, ami lesz a tömb indexe, vagy a mező neve alapján kezeled az indexet. Az alábbi kiszed minden szöveget pl:
function getIndex(propertyName) {
return propertyName.replace(/\D/, "");
}
Új hozzászólás Aktív témák
Hirdetés
- Lenovo magyar laptop billentyűzetre van szükséged? Akármelyik verzióban segítünk!
- Bomba Ár! Dell Latitude 3190 - Intel N4120 I 4GB I 64GB SSD I 11,6" HD I Cam I W11 I Garancia!
- Bomba ár! Dell Inspiron 15 3511 - i5-11GEN I 8GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gari
- Samsung Galaxy S22 Ultra 512GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! AMD Ryzen 5 2600 6 mag 12 szál processzor garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest