Hirdetés
-
LOGOUT.hu
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Doink
aktív tag
Az a hiba hogy a jelszo2-be teszed a trimelt stringet és utána nem csinálsz vele semmit.
Számok:var hasNumber = new RegExp(/\d/).test(jelszo2);
Apró megjegyzés hogy a webes világban bevett szokás szerver oldalon ellenőrizni és visszaküldeni a hibát hiszen szerver oldalon úgyis mindig kötelező ellenőrizni mindenféle inputot.
[ Szerkesztve ]
-
Doink
aktív tag
A egyik megoldás az hogy ígéretet (Promise) adj vissza és belül az onsuccess-nél resolve-old, onerror-nál meg reject-eled.
this.getData = function(){
return new Promise(resolve,reject) => {
let query = db.valami_async_művelet()
query.onsuccess = function(result){
resolve(result)
}
query.onerror = function(err){
reject(err)
}
}
}Így fogod tudni meghívni:
ValamiService.getData().then((result) => {
// beteljesült az ígéret és a result-ban lesz az eredmény
}).catch(error) => {
// hiba
});Másik elegáns megoldás ha cold observable-t használsz (rxjs).
[ Szerkesztve ]
-
Doink
aktív tag
válasz maestro87 #6674 üzenetére
Azért nem működik mert szerver oldalon lehúzol egy stringet valahonnan és azt még fel kéne parse-olni hogy ne szövegként kelljen kezelni hanem fába legyen rendezve mint a DOM.
Erre én kb csak a cheerio nevű lib-et ismerem de szerintem bármilyen xml parser megteszi ha az oldal valid. -
Doink
aktív tag
válasz maestro87 #6685 üzenetére
Szia, sima css selectorokkal:
var request = require('request');
var cheerio = require('cheerio');
request('https://www.gearbest.com/smart-watches/pp_362705.html', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var url = $("meta[property='og:url']").attr('content');
var price = $("meta[property='og:price:amount']").attr('content');
console.log(url, price);
}
});[ Szerkesztve ]
-
Doink
aktív tag
válasz maestro87 #6688 üzenetére
A fenti kódot nodejs-ben futtattam mert a lényegi rész ugyan az google scriptben is:
var cheerio = cheeriogasify.require('cheerio');
function run() {
var response = UrlFetchApp.fetch("https://www.gearbest.com/smart-watches/pp_362705.html");
var $ = cheerio.load(response.getContentText());
var result = {
url: $("meta[property='og:url']").attr('content'),
price: $(".price_area > .goods_price > .my_shop_price").data('orgp'),
name: $(".goods-info-top > h1").text()
}
Logger.log(result);
}A cheerionak lassabbnak kell lennie amíg csak pár adatra van szükséged, ettől függetlenül így is elég gyors és ugyan úgy lehet rajta gyorsítani ahogy jquery-ben is tudsz (nem az egész fában keresel hanem csak részfában). Az hogy a google script-re milyen korlátozások vannak és ott miért ilyen lassú már maga az url lekérdezés is annak neked kell utánanézni, nodejs-ben 180ms alatt végez a felparseolással és az eredmény kiírással, google scripben pedig ugyan ez a művelet több mint 10 másodperc.
-
Doink
aktív tag
válasz maestro87 #6690 üzenetére
Ezt a fát nem akarod kiiratni mert azt látod a böngészőben F12->source. <html> a fa csúcsa, annak van 2 gyereke <head> <body> és így tovább. A belső adatszerkezet lesz egy fa ahogy a gép tárolni fogja a memóriában hogy gyorsan tudj benne keresni és módosítani.
Ennek a libnek meg pont az a lényege hogy css selectorokkal tudj keresni/módosítani ebben a html-ben és ne kelljen stringkezelési műveletekkel bajlódni.
Ha mégis be szeretnéd járni a fát akkor a a dokumentációban találsz olyan metódust hogy .children() ami visszadaja egy node közvetlen gyerekeit és így már adja magát hogy rekurzívan elég egyszerű bejárni.A részfát úgy értettem hogy ha van az oldalon egy ilyened és neked kell a price és a name
<!-- többmillió html kód felette -->
<div id="product">
<p class="price">1</p>
<p class="name">name</p>
</div>
<!-- többmillió html kód alatta -->és amúgy az oldalon még van ezer más html tag mindenfelé akkor azt így csinálod:
var $ = cheerio.load(html);
var product = $("#product");
var result = {
price: product.children(".price").text(),
name: product.find(".name").text()
}és nem ezt:
var $ = cheerio.load(html);
var result = {
price: $("#product > .price").text(),
name: $("#product > .name").text()
}mert így kétszer végig fog menni az egész fán megkeresni a #product-ot.
Ettől függetlenül a cheerio oldalán van elég sok példa amit érdemes lenne átfutnod.[ Szerkesztve ]
-
-
Doink
aktív tag
válasz hiperFizikus #6725 üzenetére
Ha valamit csak ki akarsz írni amit másolhat akkor ha szerver oldalon állítód elő nem a böngészőjében javascriptel akkor abból a kliens semmit sem lát csak a végeredményt.
Ha nem lehet szerver oldalon előllítani akkor Uglify-olni lehet egyébként, ami annyit jelent hogy nehezen érthetővé teszi a kódot de a működését nem befolyásolja. Böngészőben megjelenített html-t és javascriptet nem lehet sokszorosítás ellen védeni, csak licenszel tudod korlátozni a felhasználási feltételeket.
-
Doink
aktív tag
válasz hiperFizikus #6730 üzenetére
Azért esetedben felmerül a kérdés hogy létezik-e egyáltalán olyan fájl amit lehet védeni sokszorosítás ellen. Szerintem rendre nem az a bevett szokás hogy nem hagyjuk lemásolni, hanem nyugodtam másolhatja de addig nem fogja tudni használni amíg nem aktiválja / beregisztrál és fizet / stb.
[ Szerkesztve ]
-
Doink
aktív tag
válasz hiperFizikus #6735 üzenetére
Amit te látni fogsz mert aktiválásnál beírod valami adatbázisba és amint gyanúsan sokszor használtak fel egy kulcsot különböző ip/ország/stb helyekről akkor visszavonod a licensz értelmében.
[ Szerkesztve ]
-
Doink
aktív tag
válasz tepenzed #6748 üzenetére
Mert nem jól adtad meg a dataset-et.
labels: ['1. nap', '2. nap', '3. nap'],
datasets: [
{ label: "ponty", data: [5,8,12] }, // 5 ponty az első napon, 8 ponty a 2. napon, 12 ponty a 3.-on
{ label: "keszeg", data: [1,2,3] },
{ label: "kárász", data: [4,5,6] }
][ Szerkesztve ]
-
Doink
aktív tag
válasz tepenzed #6753 üzenetére
Ha kicseréled a firebase részt egy JSON.parse()-ra akkor viszont lefutna az is. Az hogy hol akad el az meg oda van írva: 2649:49 és az a baja hogy egy undefined-on hívódik meg az entities() fgv.
Itt azért olyan kérdés is felmerül hogy nem-e egyszerűbb a d3.nest előtt összedobni ezt a struktúrát egy ciklussal mint utána 4-el. -
Doink
aktív tag
válasz hellsing71 #6852 üzenetére
Az event nevek nem stimmelnek.
-
-
Doink
aktív tag
válasz ZephyrDavid #6948 üzenetére
Itt egy rossz megoldás mert az általad írt feltételeket ki kellene javítani:
(1 háromszög nem akkor egyenlő száru ha base === b_side !== c_side, hanem ha bármelyik 2 oldala egyenlő)
Vagyis lehet hogy jó csak a base nekem nem mond semmit egy háromszögről azon kívül hogy "az szokott alul lenni".<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Page Title</title>
</head>
<body>
<input id="a" type="number">
<input id="b" type="number">
<input id="c" type="number">
<input type="submit" onclick="calc()">
<div id="result"></div>
<script>
function getType(a, b, c) {
if ((a === b) && (b === c)) {
return "isosceles";
} else if ((a === b) && (b !== c)) {
return "equiletal";
} else if ((a !== b) && (b !== c)) {
return "uneven";
}
return "???";
}
function calc() {
const a = parseInt(document.getElementById("a").value);
const b = parseInt(document.getElementById("b").value);
const c = parseInt(document.getElementById("c").value);
document.getElementById("result").innerHTML = `${a} ${b} ${c} => ${getType(a, b, c)}`;
}
</script>
</body>
</html>[ Szerkesztve ]
-
Doink
aktív tag
válasz Flowtation #6953 üzenetére
- egy notepad kell hozzá
- ha nincs jquery (1.7 vagy újabb) az oldaladon akkor azt is letölöd
- letölöd ezt is
- scriptek közé beteszed őket, jquery után legyen a turn.js<script src="......valahol a szervereden....../jquery.min.js">
<script src="......valahol a szervereden....../turn.min.js">- html <body>-ba bevered azt ami az oldalukon is látszik "Lets code" címmel
<div id="flipbook">
<div class="hard"> Turn.js </div>
<div class="hard"></div>
<div> Page 1 </div>
<div> Page 2 </div>
<div class="hard"></div>
<div class="hard"></div>
</div>
<script type="text/javascript">
$("#flipbook").turn({
width: 400,
height: 300,
autoCenter: true
});
</script>- minden div egy oldal szóval a csodaprogramodól html-be exportálod ki és oldalanként beteszed a kódjukat a fenti <div></div>-ekbe
[ Szerkesztve ]
-
Doink
aktív tag
válasz ZephyrDavid #6950 üzenetére
Képet canvas-ba ki tudod rajzolni.
-
Doink
aktív tag
Hát ha nagyon gettoban nyomod és csak a php akkor onchange-nél írd át a document.location.href -et úgy, hogy megkapja az első select kiválasztott idjét pl: http://blablalba/products?product_id=2
És így php-ban már látod a $_GET['product_id']-t és csak 1 sor js-t kellett írni.
Ez a megoldás több sebből is vérzik de csak azért írtam hogy lásd hogy megoldható.Amúgy inkább ajaxal kéne, ha az első select változik akkor fetch()-elsz egyet ahol visszakapod a kiválaszott product színeit json-ban. Utána meg jsből kicseréled az alsó select értékeit.
-
Doink
aktív tag
válasz snowdog #6965 üzenetére
1. kérdés: Nem lehet, a user beállította a böngészőjében hogy kérdezzen rá akkor rá fog kérdezni. (IE-nél lehet valamit hegeszteni rajta talán mert nekik van ilyen: window.navigator.msSaveOrOpenBlob)
2. kérdés:
Én fetchelném őket blob-okba aztán utána save.
Ezt az iframe-es / 4 dollárjelért jquery behúzásos setTimeoutos mókát nem biztos hogy eröltetném. -
Doink
aktív tag
-
-
Doink
aktív tag
válasz bandi0000 #7035 üzenetére
Mert beégette az adatokat, ha innen akarsz hívni egy service-t akkor neked így indítani a konstruktort nem sok értelme van (egy üres tömböt deklarálsz majd belekopizol egy üres tömböt). Viszont ha azon a vonalon vagy hogy resolve-olod a state-ben a service hívást akkor akár még járható út is lehet, hiszen akkor van mit lemásolni.
-
Doink
aktív tag
-
Doink
aktív tag
Példa, ez mind blokkoló másold be az F12 console-ba és nyomj entert:
document.body.innerHTML = "Ezt se látod";
alert("ugye?");
document.body.innerHTML = "Meg ezt se látod";
alert("ugyehogyugye?");
document.body.innerHTML = "Na ezt látod";
alert("Na majd most fogja újrarajzolni az oldalt a böngésző mert előtte minden blokkoló"); -
Doink
aktív tag
Az összefüggés ott van hogy a 2 függvényed blokkoló az onclickben, vagyis a böngésző addig nem rajzolja újra az oldalt amíg nem végzett mind2vel. (addig befagy a böngésző mivel 1 szál van)
Az én példámban is csak az utolsó alert() OK után fogja újrarajzolni neked.Ennek az oka az event-loop modell, ami akkor kurva jó ha sok apró dolgot csinálsz async (jellemzően webes felületeken ez történik).
Operaban ctrl+shift+I
[ Szerkesztve ]
-
Doink
aktív tag
válasz laracroft #7139 üzenetére
<!DOCTYPE html>
<html>
<body>
<button id="btn">Click me</button>
<script>
const btn = $("#btn");
btn.on("click", () => {
btn.attr("disabled", "disabled");
$.get("/egy-szep-url")
.then((response) => {
// 200 OK jött vissza
}).catch((error) => {
alert(error);
}).always(() => {
alert("Most fog lejönni a disabled");
btn.removeAttr("disabled");
});
});
</script>
</body>
</html>[ Szerkesztve ]
-
Doink
aktív tag
Nem mert a CORS az böngésző feature.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin[ Szerkesztve ]
-
Doink
aktív tag
válasz hiperFizikus #7419 üzenetére
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>strong { color: red }</style>
<title>File(s) size</title>
<script>
function readTextFile(file) {
const reader = new FileReader();
reader.onload = (event) => {
document.getElementById('file-content').innerHTML += `<strong>${file.name} (${file.size} bytes):</strong> <pre>${event.target.result}</pre> <br><br>`;
};
reader.readAsText(file);
}
function sendFiles(elem) {
document.getElementById('file-content').innerHTML = '';
for(const file of elem.files) {
readTextFile(file);
}
};
</script>
</head>
<body>
<p><input id="uploadInput" type="file" name="myFiles" onchange="sendFiles(this);">
<p><input type="submit" value="Send file"></p>
</body>
<p id="file-content"></p>
</html>[ Szerkesztve ]
-
Doink
aktív tag
-
Doink
aktív tag
Ilyen kimutatást ugyan abban az excelben is tudsz csinálni.
Ha programot akarsz rá írni mert pl. emailben akarod értesíteni akkor választasz egy egyszerű nyelvet (pl.: python, javascript) és letöltöd vele a doksit csv-ben és szerintem ettől a ponttól nagy problémába nem fogsz ütközni.
Új hozzászólás Aktív témák
Hirdetés
- Milyen billentyűzetet vegyek?
- Linux kezdőknek
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- IFA 2024: Harmadik generációs T-Rex is volt
- Autós topik
- Kormányok / autós szimulátorok topikja
- Formula-1
- Androidos fejegységek
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Futás, futópályák
- További aktív témák...
- Hibátlan - GIGABYTE Z370 HD3 LGA1151v2 alaplap + Windows 11 Pro digitális licensz
- Hibátlan - INTEL Core i7-8700 LGA1151v2 dobozos CPU processzor
- Szép Tervező Vágó Dell Precision 5530 Laptop -80% 15,6" i9-8950HK 32/512 QUADRO P2000 4GB FHD IPS
- Apple Iphone 13 Pro - 256 GB (Space Grey)
- Komplett fénytechnika (Robotlámpa, stroboszkóp, vezérlő, állvány)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest