- Fujifilm X
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Kormányok / autós szimulátorok topikja
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- OLED TV topic
- Sony MILC fényképezőgépcsalád
- Milyen belső merevlemezt vegyek?
- Milyen TV-t vegyek?
- Hobby elektronika
- AI-ra, játékra, mindenre kiváló lehet a Gigabyte új PC-je
-
PROHARDVER!
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
Az remélem megvan, hogy a javascript a böngészőben fut, a PHP meg a szerveren
És ezek HTTP-n keresztül kommunikálnak egymással. Ergo semmi nem akadályoz meg téged abban, hogy Javascriptből adatot küldj a PHP-nak HTTP-n keresztül, és azt az adatot PHP oldalon Json-ként lementsd.
-
venic
kezdő
Sziasztok!
Azt szeretném megkérdezni, hogy az megoldható-e, hogy egy változóban lévő adatot kirakjak json fájlba?
Olyat már csináltam korábban, hogy PHP-ban kapott adatokat kiraktam json fájlba, majd ezt később felhasználtam JavaScript kódban, de most fordítva kellene, de nem tudom, ez igy megoldható-e egyáltalán. Illetve nem ragaszkodok a json fájlhoz, csak szeretném az adatot PHP-ban használni később. Nem tudom erre van-e esetleg valami jobb ötlet.
Köszönöm a segítséget előre is. -
btz
addikt
Van X db képem. A példában most legyen 1538, és ezt Y darabszámban szeretném megjeleníteni. A példában legyen ez 200.
var allpicture = 1583;
var pictureperpage = 200;
var actualpage = 1;Készítettem egy változót ami kiszámolja, hogy hány lapon fér el X kép:
var totalpage = Math.ceil(allpicture / pictureperpage);
Mi az első és utolsó kép száma az N. lapon.
if (actualpage == 1) { var firstpiconpage = 1; } else {
var firstpiconpage = ((actualpage - 1) * pictureperpage) + (actualpage - 1); }
if (actualpage == 1) { var lastpiconpage = firstpiconpage + (pictureperpage-1); } else {
var lastpiconpage = firstpiconpage + pictureperpage;
}
if (firstpiconpage > allpicture) { var firstpiconpage = allpicture; }
if (lastpiconpage > allpicture) { var lastpiconpage = allpicture; }Kérdésem a szokásos. Van e valamilyen forumla, amivel egyszerűbb lehet a kód?
JSFiddle DEMO -
btz
addikt
Hát ez tényleg "easy" megoldás volt.
Még annyit változtattam rajta, hogy ezt
const editbuttons = document.querySelectorAll('.x > button');
kicseréltem erre:const editbuttons = document.querySelectorAll('.editbuttons');
így az egész az class x div-től is független lesz, akár el is hagyható lenne.Köszönöm a gyors bugfixet
-
cattus
addikt
Igen, ugye az a probléma, hogy az event handler-ben a bubble-capture miatt a target az az ikon lesz. Egy potenciális fix, ha kicseréled a
const editbutton = e.target;
sort erre:const editbutton = e.currentTarget;
-
btz
addikt
Igen ezzel csökken az a terület, ami undefinedet ad, de magára az ikonos részre kattintva továbbra is undefined. De ha például nem is kell majd valahol szöveg, csak az ikon a gombon?
De úgy néz ki, hogy a régi tradicionális módszer esetén nem lenne gond.
-
btz
addikt
Sziasztok!
Ismét egy Javascript probléma. (Ezzel mindig csak probléma van, de az is lehet hogy csak velem
)
Jim-Y által ajánlott querySelectoros kódból szeretnék Camera Name/Path editort.
A gombokon FontAwesome edit ikont használnék. A probléma az vele, hogyha rákattintok, akkor csak magára a gombra kattintva jelenik meg a popupban az adat, ha az ikon részre kattintok, akkor undefined-et kapok.
Az első gombnál megcsináltam, hogy a "data-...." infókat beletettem a buttonon kívül az <i> tagbe is, így:<button class="buttonact yellowbtn editbuttons" data-camNum="A" data-camId="1" data-camName="CAMERA1" data-camPath="/CM/PATH1/">
<i data-camNum="A" data-camId="1" data-camName="CAMERA1" data-camPath="/CM/PATH1/" class="fa fa-pencil-square-o" style="font-size:20px">CAM1</i>
</button>
De ezzel duplikálni kell a sorokat.(B)JSFiddle DEMO(/B)
-
btz
addikt
-
cattus
addikt
Engedelmeddel írnék néhány feedbacket a kódhoz:
HTML:
A `big` HTML tag obsolete, nem javasolt a használata
<input type="button" /> helyett inkább használjunk <button>-t.
Nem szerencsés, ha a `name` attribútom ugyanaz több input elemnél is, mivel esetleges szerveroldali feldolgozásnál ez azonosítja az egyes elemeket.JS:
var helyett ajánlott let vagy const használata
Személyes preferencia, de szerintem nem mindegy, hogy JS-ből milyen módon kérdezed le a DOM elemeket. Pl. te class alapján teszed, én ezt akkor tenném, ha pl. a class-t akarom módosítani. Ebben az esetben inkábbdocument.querySelectorAll('input[type="checkbox"]')
-ot használnék (így pl. már eleve ki van szűrve minden input, ami nem checkbox).A for ciklus helyett megcsináltam array műveletekkel: fiddle
+1: érdemes jól formázottan tartani a kódot, sokat segít az olvashatóságon (a JSFiddle tudja automatikusan a jobb felül lévő Tidy gombbal).
-
btz
addikt
Biztos erre is van szebb kód, ami nem anti-pattern és 2020-ban is megállja a helyét:
Kiválasztott checkbox elemek kiíratása. A példakódban Alert-be és Console.log-ba
A kiválasztott elemeket vessző, majd szóköz választja el a megjelenített ablakban, de az utolsó elemnél is megjelenik ez a vessző és szóköz, ami nem kell. Ezt úgy oldottam meg, hogy a kapott elemlista stringből levágok két karaktert, ami a vessző és a szóköz.function printChecked(){
var items=document.getElementsByName('acs');
var selectedItems="";
for(var i=0; i<items.length; i++){
if(items[i].type=='checkbox' && items[i].checked==true)
selectedItems+=items[i].value+", ";
}
var str = selectedItems.substring(0, selectedItems.length - 2);
alert(str);
console.log(str);
} -
-
cattus
addikt
válasz
K1nG HuNp #7881 üzenetére
> Az inline stylekkel ugyszint semmi baj nincs, objektiven gyorsabb egy weboldal betoltese ahol nem egy bazinagy css fajlban szerepel minden, de továbbmegyek, a legtobb css-in-js solutin is "inline" style attributumokkent irodik es run/build-time valik style tagekke.
Az inline style-lal az a baj, hogy se formázás, se autocomplete, se write-time error checket nem kapsz, amikor írod, plusz újrahasználni se tudod a stílusokat. A CSS-in-JS libeknek meg csak az outputja inline style, nem véletlenül nem írsz ott se közvetlenül a style tag-be.
-
K1nG HuNp
őstag
Ha mar megmutatjuk mi anti-pattern akkor ne mas anti-patternekkel tegyuk
Nem egy input vagy egy gomb dönti el magáról, hogy mennyi space van maga körül, mert így sosem lesz újra felhasználható a komponens. Az inline stylekkel ugyszint semmi baj nincs, objektiven gyorsabb egy weboldal betoltese ahol nem egy bazinagy css fajlban szerepel minden, de továbbmegyek, a legtobb css-in-js solutin is "inline" style attributumokkent irodik es run/build-time valik style tagekke.
-
martonx
veterán
"Datasetet? Úgy tudom azt én nem is használtam az első verziós kódban. Vagy de?"
Hát éppen ez az, hogy nem használtad, de nagyon kellett volnaES6-7-2020-nak nézz utána, mert ez a jelen, az ES5 a rég múlt, ami a jquery-vel együtt elmúlt.
Elhiszem, hogy nem te találtad ki a myfunction nevet, de ha ez egy open popup-ot csinál, akkor illene e szerint elnevezni, ahogy fura módon a close popup egész értelmes név volt. -
btz
addikt
válasz
martonx #7878 üzenetére
"jsfiddle-nek a html részébe erőltetted bele a javascriptet
"
Merő lustaság, ahogy az inline style és a <br /><br /> is. Sorry
"Aztán a js-ben dataset-et nem használtad jól."
Datasetet? Úgy tudom azt én nem is használtam az első verziós kódban. Vagy de?
" klasszikus es5 ...Béna metódus elnevezés (MyFunction WTF?) "
Hallottam már valamit ES6-ról de lövésem sincs amúgy mi az, ennek utána kéne olvasnom.
Tutorialokat olvasgatva férceltem össze a kódot. És amikor ilyeneket csinálok, akkor meghagyom az eredeti elnevezéseket, amíg mással nem ütközik. Amúgy sok netes tutorialban a myFunction() elnevezést használnak a példakódban. Nem én találtam ki."minden sornál meg lehetett volna állni, és kifejteni, hogy mi miért nem jó"
Természetesen minden új infót szívesen veszek (mi miért nem jó, hogy lehetne jobb), mert abból tudok tanulni és fejlődni. Nem végzek semmilyen webfejlesztői sulit, a netről szedem össze a tudást, ami néha nem biztos hogy a jó irányba visz, épp ezért vagyok ezen a fórumon is, mert itt vannak a témában tapasztaltabb fórumozók.
-
martonx
veterán
Jim-Y is összeszedett párat, amin alapból kiakadtam, hogy jsfiddle-nek a html részébe erőltetted bele a javascriptet
Aztán a js-ben dataset-et nem használtad jól. Meg klasszikus es5 js volt, ami így 2020-ban, nem borzalmas, csak nem jó látni. Béna metódus elnevezés (MyFunction WTF?), meg igaziból kb. minden sornál meg lehetett volna állni, és kifejteni, hogy mi miért nem jó úgy ahogy van.
Ettől függetlenül persze működött, és tudjuk: "A működő kód, jó kód". -
btz
addikt
Üdv!
Állásinterjúra szerencsére nem kell mennem ezzel, mert van jelenleg (nem programozás). Csak saját jellegű projektekhez van szükségem némi Javascript tudásra (aztán ki tudja, hogy később hol veszem hasznát még)
Ettől függetlenül köszi az építő jellegű kritikát és tanácsokat -
Jim-Y
veterán
Nem borzalmas, mert megcsinalja amit kell, viszont sok anti-pattern van benne, mondjuk, ugy, hogy nem tul elegans a kodod es igy biztos elbuknal egy ilyen minosegu koddal egy allasinterjun.
https://codesandbox.io/s/modest-brown-be2zn?file=/index.html
Kis magyarazat a readme fileban -> https://codesandbox.io/s/modest-brown-be2zn?file=/readme.md
-
btz
addikt
válasz
martonx #7873 üzenetére
Például a nagy kék felugró boilerplate bar miatt (Talán csak a GDPR felugrók az idegesítőbbek nála), a becsukhatatlan menük miatt (Egy kódokkal foglalkozó oldalon ilyen?) stb... Volt egyszer olyan nyűgje is hogy teljesen kifagyasztotta a gépet mikor a forkra kattintottam egy kódnál (De legalább ez már jó). Mobileszközön egy az egyben használhatatlan.
A codepent viszont jobban szeretem, de igazából a böngésző ablakot preferálom. Kódot mutogatni viszont végül is mindegy, hogy melyiket használja az ember."A kódod egyébként borzalmas"
Pontosan mi az ami borzalom rajta? Formailag oké, ezt most csak így összedobtam, de van esetleg más borzalom is benne?
-
martonx
veterán
Nagyon dícséretes! És miért utálod a jsfiddle-t? Amúgy meg ott van a codepen.io mint alternatíva, ha az jobban bejön
Én totál leszarom, hogy mit használsz, de lássuk be rengeteg eset van, amikor működő, más által is módosítható kódot kell mutatni a segítség kéréshez, márpedig erre nem tudok jobb alternatívát ezeknél.
A kódod egyébként borzalmas, de legalább működik, és jquery mentes.
JQuery-t 2020-ban használni emberiség ellenes bűntett -
btz
addikt
válasz
martonx #7870 üzenetére
Az oké is volt számomra, ez a link már a könyvjelzőim között volt modal témában, de nekem pontosan az kellett, hogy a benne lévő input értékek a data szertint változzanak. Erre találtam, is megoldást JQueryset, de mivel kerülöm ezért akartam simple Javascriptesíteni.
De időközben rajta voltam a témán és ezt sikerült megalkotnom
<button onclick="myFunction(this)" data-book-id="123" data-book-name="Test Book 1">Open Popup Book1</button><br />
<button onclick="myFunction(this)" data-book-id="456" data-book-name="Test Book 2">Open Popup Book2</button><br />
<button onclick="myFunction(this)" data-book-id="789" data-book-name="Test Book 3">Open Popup Book3</button><br />
<br /> <br />
<script>
function myFunction(thisbook) {
var bkID = thisbook.getAttribute("data-book-id");
var bkNam = thisbook.getAttribute("data-book-name");
document.getElementById("myBookId").value = bkID;
document.getElementById("myBookName").value = bkNam;
document.getElementById("book-update-popup").style.display = "block";
}
function closeBookModal() {
document.getElementById("book-update-popup").style.display = "none";
}
</script>
<div id="book-update-popup" style="display: none; margin: 5px; padding: 10px; border: 1px solid;">
BookID: <input type="text" id="myBookId" value="">
BookName: <input type="text" id="myBookName" value="">
<br /><br />
<button onclick="closeBookModal()">Close</button><br />
</div> -
martonx
veterán
Már hogy a fenébe ne lehetne? https://www.w3schools.com/howto/howto_css_modals.asp
-
btz
addikt
Üdv!
Van egy <a> link,aminek van két data értéke bookID és bookName. Erre rákattintva egy felugró ablak megjelenik az adott értékekkel. JQuery-s megoldásom van, de érdekelne, hogy simple Javascriptel meg lehet e oldani? Mindenhol ahol keresgéltem, csak Jquery-s megoldások vannak.
-
btz
addikt
Köszönöm a segítségeteket. Így már tökéletes a működés.
Egy kicsit átvariáltam, hogy a start() ne legyen alapértelmezett
https://codepen.io/bzozoo/pen/YzyLLZv -
disy68
aktív tag
Az indított interval azonosítóját tárolod a változóban, legyen elérhető onnan, ahonnan használni szeretnéd, ez már jó. Viszont amikor újra hívod a startot, akkor a korábbi interval még futni fog, ameddig le nem lövöd. Magyarul azzal kell kezdeni, hogy hívsz egy clearInterval-t akorábbi interval azonosítójával mielőtt újat indítasz. A gomb elrejtés/mutatás teljesen jó irány az egész mellé. Mintafiddle (szétszedtem a html/js-t, egyéb kulcsszavak: arrow function/lambda function, const/let, addEventListener)
-
btz
addikt
Ah, már értem.
Így már működik, viszont ha kétszer nyomok rá a startra, akkor nem.
https://www.w3schools.com/code/tryit.asp?filename=GENNT2VVWKHFPersze csinálhatnám azt, hogy első klikkre elrejtem a start gombot, de érzem én hogy az nem elegáns módszer.
-
btz
addikt
Úgy érted, hogy funkción kívül? De akkor meg nem lesz start funkcióm.
Egy másik példa:
Ha nem funkcióban van a változó, akkor megy:
https://www.w3schools.com/code/tryit.asp?filename=GENNHPYKDWURÍgy viszont már nem:
https://www.w3schools.com/code/tryit.asp?filename=GENNKLS0GE1L -
btz
addikt
Üdv!
Van egy modal.js-em. Nem akar stoppolódni!...
function startCallback() {
var startCB = window.setInterval(myCallback, 500, -1);
}
function stopCallback() {
console.log('TRY TO STOP');
window.clearInterval(startCB);
console.log('STOPPED');
}
function myCallback(a)
{
plusSlides(a);
}
...Start onclickre el kezdi cserélni a képeket a slider, de stopra ezt a hibát kapom:
modal.js:44 Uncaught ReferenceError: startCB is not defined
at stopCallback (modal.js:44)
at HTMLAnchorElement.onclick -
PoniLoW
csendes tag
Sziasztok!
Adott a következő visszaszámláló kódja: FIDDLE
Tud nekem valaki segíteni abban, hogy hogyan lehetne kiküszöbölni azt, hogy oldalfrissítéskor ne induljon el automatikusan újra a visszaszámlálás, hanem maradjon a megállított értéken és csak a Start gomb megnyomásával induljon el újra? Úgy, hogy a többi funkció megmaradjon és változatlanul működjön.
Köszönöm a tanácsokat!
-
-
btz
addikt
Nos. Végre megy. Kitöröltem a számomra felesleges sallangokat. Létrehoztam egy copy funkciót és egy Copy Buttont:
<html>
<body>
<div id="mainContent">
MAIN CONTENT<br />
</div>
<br />
<button id="btnCopy">COPY</button>
<script type="text/javascript" >
// Create a fake textarea
const textAreaEle = document.createElement('textarea');
var text = "tesztszöveg 3333";
// Set the value
textAreaEle.value = text;
// Append the textarea to body
document.getElementById("mainContent").appendChild(textAreaEle);
btnCopy.onclick = function () {
textAreaEle.select();
textAreaEle.focus();
document.execCommand('copy');
};
</script>
</body>
<html>Aztán az eredeti saját kódomat így módosítottam:
</head>
<body>
<b>AZ EMBED kód előnézete:</b><br />
<iframe src="https://parentdomain.com/embed/id" id="iframe" name="iframe" scrolling="no" frameborder="0" style="width: 100%; height: 600px;"></iframe>
<br /><br />
<div id="myDiv">0</div>
<script type="text/javascript" >
function receiveMessage(event) {
var ifrheig = (event.data.v1) + 'px';
document.getElementById("iframe").style.height = ifrheig;
var v1data = (event.data.v1);
var textNode = document.createTextNode(v1data);
document.body.appendChild(textNode);
var toCopy = '<iframe src="https://parentdomain.com/embed/id" id="iframe" name="iframe" scrolling="no" frameborder="0" style="width: 100%; height: ' + v1data + 'px;"></iframe>';
var innertomydiv = '<b>Embed kódja:</b><textarea rows="5" style="width: 100%;" type="text" id="code" name="code">' + toCopy + '</textarea><button id="btnCopy"><b>COPY</b></button>';
document.getElementById("myDiv").innerHTML = innertomydiv;
btnCopy.onclick = function () {
document.getElementById("code").select();
document.getElementById("code").focus();
document.execCommand('copy');
};
}
window.addEventListener("message", receiveMessage, false);
</script>
</body></html>Így a böngészőben megjelenik az Embed előnézete, alatta egy Textarea mezőben az Iframe kód (Jobb mint az input mező) a magassági értékkel, egy működő Copy gomb, ami vágólapra másolja a Iframe embed kódot, végül teszt gyanánt a magassági érték, de ez a publikus kódban már nem lesz benne.
-
nevemfel
senior tag
Az első példádat simán betettem a html oldalba, script tagok közé, és a firefox erre ezt írta:
A document.execCommand('cut'/'copy') megtagadva, mert az nem egy rövid ideig futó, felhasználó által generált esemény kezelőjéből lett hívva.
Ezután beraktam az egészet egy eseménykezelőbe, így már működik:
-
btz
addikt
Ezt próbálgattam már. Nálam nem működik (szokás szerint)
Először így próbáltam:
<script type="text/javascript" >
// Create a fake textarea
const textAreaEle = document.createElement('textarea');
// Reset styles
textAreaEle.style.border = '0';
textAreaEle.style.padding = '0';
textAreaEle.style.margin = '0';
// Set the absolute position
// User won't see the element
textAreaEle.style.position = 'absolute';
textAreaEle.style.left = '-9999px';
textAreaEle.style.top = `0px`;
// Set the value
textAreaEle.value = text;
// Append the textarea to body
document.body.appendChild(textAreaEle);
// Focus and select the text
textAreaEle.focus();
textAreaEle.select();
// Execute the "copy" command
try {
document.execCommand('copy');
} catch (err) {
// Unable to copy
} finally {
// Remove the textarea
document.body.removeChild(textAreaEle);
}
</script>Ekkor a textAreaEle.value = text; érték nem volt definiálva így készítettem neki egy változót. var text = "tesztszöveg";
<script type="text/javascript" >
// Create a fake textarea
const textAreaEle = document.createElement('textarea');
// Reset styles
textAreaEle.style.border = '0';
textAreaEle.style.padding = '0';
textAreaEle.style.margin = '0';
// Set the absolute position
// User won't see the element
textAreaEle.style.position = 'absolute';
textAreaEle.style.left = '-9999px';
textAreaEle.style.top = `0px`;
var text = "tesztszöveg";
// Set the value
textAreaEle.value = text;
// Append the textarea to body
document.body.appendChild(textAreaEle);
// Focus and select the text
textAreaEle.focus();
textAreaEle.select();
// Execute the "copy" command
try {
document.execCommand('copy');
} catch (err) {
// Unable to copy
} finally {
// Remove the textarea
document.body.removeChild(textAreaEle);
}
</script>Hiba: Uncaught TypeError: Cannot read property 'appendChild' of null.
Beraktam bodyba a scriptet, utána semmit nem csinált, viszont a hiba megszűnt.
Aztán a document.body részt cseréltem document.getElementById("mainContent").appendChild(textAreaEle);-re. Így már megjelenik a textarea, benne a tesztszöveg felirattal. (A kódból kitöröltem azt a részt ami elrejti a textarea-t).<html>
<body>
<div id="mainContent">
MAIN CONTENT<br />
</div>
<script type="text/javascript" >
// Create a fake textarea
const textAreaEle = document.createElement('textarea');
var text = "tesztszöveg";
// Set the value
textAreaEle.value = text;
// Append the textarea to body
document.getElementById("mainContent").appendChild(textAreaEle);
// Focus and select the text
textAreaEle.focus();
textAreaEle.select();
// Execute the "copy" command
try {
document.execCommand('copy');
} catch (err) {
// Unable to copy
} finally {
// Remove the textarea
//document.body.removeChild(textAreaEle);
}
</script>
</body>
<html>Viszont nem másol semmit a vágólapra.
-
btz
addikt
válasz
sztanozs #7852 üzenetére
Nem bele szeretném, hanem mellé helyezni. Az első Iframe a megjelenítési minta. Tehát az user ebből látja, hogy fog kinézni a kód eredménye, amit az inputból kimásol.
Az input azért kell, hogy a felhasználó könnyen ki tudja jelölni és másolni belőle az Iframe kódot, majd azt beilleszteni máshová, például a saját weboldalába, a megfelelő magassági értékkel együtt. Ekkor már a JavaScript-et el is hagyhatja, mivel olyan Iframe kódot másol ki, ami tartalmazza az Iframe contentjének magasságát. De ez nem is kéne, ha valahogy találnék egy lehetőséget gombnyomásra be másolni az user vágólapjára az Iframe kódot. Mivel ez a cél, hogy az user könnyedén copyzza. -
btz
addikt
válasz
sztanozs #7848 üzenetére
Pontosan hogy is tudnám a "var innertomydiv" változómat végigfuttatni ezzel? Bocsi, de én már hosszú ideje kezdő vagyok Javascriptben, így ez egy kicsit magas, hogyan is tudnám ezt alkalmazni, de akár az előző BA változós példához is jó lenne, tudnom, hogyan is varázsolhatom bele, illetve hogyan nyerhetem ki, mondjuk egy új változóban?
Emoik nem lesznek benne, csak a példában is látott input mező benne az input mezőben lévő iframe html kód a magassági értékkel együtt ami a v1data változóban van tárolva.
var innertomydiv = '<input style="width: 100%;" type="text" id="frame" name="frame" value="<iframe src='https://website.com/embed/id' id='iframe' name='iframe' scrolling='no' frameborder='0' style='width: 100%; height: ' + v1data + ';'></iframe>">';
UPDATE:
A kimásolandó kód értékét elrontottam, mert id="iframe" name="iframe" helyett csak id="frame" name="frame" van az input mezőben.Amúgy az még jobb lenne, ha valami buttonnal az egész értéket a vágólapra is lehetne tenni. Ennek még utánanézek.
-
btz
addikt
válasz
sztanozs #7847 üzenetére
Sikerült megoldanom a problémámat, részben a segítségeddel, mivel rájöttem, hogy amit akarok az az inner.HTML-el is megoldható. Ismertem amúgy ezt a lehetőséget, de nem akartam használni, mivel ala nature szerettem volna kiíratni, mert bele akartam rakni egy input mező value értékébe. Ekkor villant be hogy mért ne csinálhatnám az egész input mezőt az innerHTML-el?
A https://website.com/embed/id oldalon ez a script leméri az "all" div magasságát.
<script>
var element = document.getElementById('all');
var magassag = (element.offsetHeight);
var MYGLOBAL = (element.offsetHeight) + 10;
//window.parent.postMessage(['varA', MYGLOBAL], '*');
parent.postMessage({v1: MYGLOBAL}, "*");
</script>Azon az oldalon ahol a https://website.com/embed/id be van szúrva IFRAME ként:
<html lang="en"><head>
<meta charset="utf-8">
<title>EMBED TESZT</title>
</head>
<body>
<iframe src="https://website.com/embed/id" id="iframe" name="iframe" scrolling="no" frameborder="0" style="width: 100%; height: 600px;"></iframe>
<br /><br />
<div id="myDiv">0</div>
<script type="text/javascript" >
function receiveMessage(event) {
var ifrheig = (event.data.v1) + 'px';
document.getElementById("iframe").style.height = ifrheig;
var v1data = (event.data.v1);
var textNode = document.createTextNode(v1data);
document.body.appendChild(textNode);
var innertomydiv = '<input style="width: 100%;" type="text" id="frame" name="frame" value="<iframe src='https://website.com/embed/id' id='iframe' name='iframe' scrolling='no' frameborder='0' style='width: 100%; height: ' + v1data + ';'></iframe>">';
document.getElementById("myDiv").innerHTML = innertomydiv;
}
window.addEventListener("message", receiveMessage, false);
</script>
</body></html>1. Megjelenik az iFrame kezdetben 600px magassággal.
2. Kezdetben a myDiv értéke nulla.
3. A scriptben a receiveMessage funkcióval lekérem a CHILD oldal var MYGLOBAL = (element.offsetHeight) + 10; értékét ami a szülő oldalon van, beleteszem az egészet egy "ifrheig" nevű változóba és ezzel már be tudom állítani az Iframe magasságát (+10px ráhagyás, de ez már a "CHILD" oldali MYGLOBAL értékben alapból benne van)
4. v1data változóba téve ismét lekérem a MYGLOBAL értékét (event.data.v1) amit textNode-ként ki lehet íratni az aktuális helyen. Arra gondoltam, hogy majd ezt teszem bele egy input mezőbe magasságértékként az Iframe kódjával együtt, így majd az user már a kellő magassági értékkel együtt tudja kimásolni azt, nem kell pluszban a scriptkódot is kimásolni , hogy a megfelelő magasságot kapja.
5. Aztán rájöttem, hogy az egészet egy innertomydiv változóval beleíratom input mezőstől a második pontban említett myDiv-be. Így a pléda Iframe alatt megjelenik egy input mezőben az iFrame html kódja, amit könnyen kimásolhat az user és beilleszthet akárhova a megfelelő mérettel. -
sztanozs
veterán
válasz
sztanozs #7847 üzenetére
fn helyesen
function encodeHTML(e){return e.replace(/./g,function(e){return"&#"+e.charCodeAt(0)+";"})}
bár ez széttöri az emoji-kat (és vsz más komponens karaktereket is)
igazázából lehet elég ez is:function encodeHTML(e){return e.replace(/[<>]/g,function(e){return"&#"+e.charCodeAt(0)+";"})}
-
sztanozs
veterán
document.write(BA);
Ez felülírja az egész dokumentumot. Keress egy HTML objektumot (pl egy DIV-et) vagy illessz be valahova az oldalba, és add át az innerHTML értékének a kapott adatot (legjobb, egyébként ha fogadó oldalon dobsz rá egyescape-ethtml konvertert*, hogy véletlenül se lehessen szkriptet beinjektálni az oldalba).*
function encodeHTML(e){return e.replace(/[.]/g,function(e){return"&#"+e.charCodeAt(0)+";"})}
-
sztanozs
veterán
válasz
radi8tor #7842 üzenetére
Egy redirect egy oldalra, ami vsz valami droppert tartalmaz.
<meta http-equiv="refresh" content="1;url=https://****.com/base64_encoded_id">
Nem, ez egy Live.com phishing site:
Potentially malicious activity detected
Disclaimer: These verdicts should be used to detect potentially malicious websites, not as a final verdict!
urlscan - Score: 100
Categories: phishing
Tags: phishing
Phishing against: Microsoft (Consumer) -
radi8tor
MODERÁTOR
Kaptam egy spam levelet. Egy html file volt a mellékletben, kérte nyissam meg.
Ez volt csak benne, mit csinálhat?<script language="javascript">document.write(unescape('....'));</script>
-
btz
addikt
Így már sikerül továbítani a variablet, de az egész oldalt felülírja
Ez van az IFRAME-lendő oldalban.
var MYGLOBAL = 'MYGLOBAL okkéé';
parent.postMessage({v1: MYGLOBAL}, "*");
Ez pedig abban, amiben az Iframe is
<iframe src="https://weboldal.ahol.var.MYGLOBAL.ad.egy.erteket/" id="iframe" scrolling="no" frameborder="0" style="width: 100%;"></iframe>
<script type="text/javascript" >
addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
var BA = (event.data.v1);
document.write(BA);
}
</script>
Eredmény hogy fehér lapon meglkapom, hogy "MYGLOBAL okkéé" de ez eltünteti magát az Iframet.
-
btz
addikt
Egy IFRAME-ből ptóbálom kiszedni "a" változó értékét.
<iframe src="https://weboldal.ahol.var.a.ad.egy.erteket/" id="iframe" scrolling="no" frameborder="0" style="width: 100%;"></iframe>
Négyféle variációt próbáltam.
1.
var check=document.getElementById("iframe").contentWindow.a;
document.writeln(check);
2.var check=document.getElementById("iframeid").contentDocument.a;
document.writeln(check);
3.
var b;
// you might want to write these into if statements to make sure that e.data[0] is varA if you have multiple messages coming across
if (typeof window.addEventListener != 'undefined') {
window.addEventListener('message', function(e) {
b = e.data[1];
}, false);
} else if (typeof window.attachEvent != 'undefined') { // this part is for IE8
window.attachEvent('onmessage', function(e) {
b = e.data; // you'll probably have to play around with this part as I can't remember exactly how it comes across in IE8 -- i think it will involve slice() iirc
});
}
document.writeln(b);ebben az esetben kell egy ilyen kód is az iframe-mel lekért oldalba
window.parent.postMessage(['varA', a], '*');
4.
var myFrame = window.frames[0].window;
document.writeln(myFrame.a);Természetesen miért is működne bármelyik is. Mindegyik eredménye Undefined, kivéve a 4. eset, ott semmi. Különböző és azonos domainen lévő Iframe-mel próbálva.
-
martonx
veterán
válasz
gzbotii #7830 üzenetére
jaa, és az előző hsz-emből elfelejtettem a linket: https://jsfiddle.net/osx78nq9/
Látod mennyivel szívesebben segít mindenki, ha normálisan jsfiddle-ön szemléltetve raksz fel kérdés, mintha anélkül?
-
gzbotii
nagyúr
Sziasztok,
Mint írtam nemrég, most ismerkedem a JS-el. Egy tutorialban látható kis játékot szerettem volna továbbvinni, de elakadtam. Eredetileg három kör, kattra eltűnik. Most van 6 kör, pirosra és sárgára kattintva azok eltűnnek, a kékre alertet dob böngésző. Kis segítséggel összeraktam eddig, viszont most megy az alert része. A kód így nézne ki:
let redAndYellowElements = document.getElementsByClassName("red-and-yellow");
for (let i = 0; i < redAndYellowElements.length; i++) {
redAndYellowElements[i].onclick = () => {
redAndYellowElements[i].style.display = "none";
}
}
let blueElements = document.getElementsByClassName("blue");
for (let i = 0; i < blueElements.length; i++) {
blueElements.onclick = () => {
alert("Nono!");
}
}
-
petyus_
senior tag
válasz
hiperFizikus #7825 üzenetére
ne 'block' legyen, hanem 'inline-block'
-
hiperFizikus
senior tag
Van egy szokásos szövegbe ágyázott
<span style="display:block" > abcd </span>
tagom, amin a nono/block váltogatom . De csúnyán új sorba ugrik . Ezt egy kulcsszóval meg lehet szüntetni, használtam is nagyon régen valamikor, de az istennek sem tudom újra megtalálni, és sajnos azt sem tudom már, hogy melyik kulcsszóra keressek rá érte .
Melyik kulcsszóval lehet megszüntetni ezt az ugrást ? -
Zedz
addikt
YDKJS se maradjon ki.
-
K1nG HuNp
őstag
-
gzbotii
nagyúr
Sziasztok,
Most kezdetem JS-t tanulni, ehhez szeretnék segítséget kérni. Olyan dokumentációt keresek, ami a nyelv alapfogalmait röviden elmagyarázza (pl arrays, function, equality operators, etc).
Néztem az összefoglalót, de kimondottan ilyet nem találtam és a legtöbb linkre 404-et dob.
-
lajszer
tag
Üdv!
Egy honlapon az alábbi script egy beúszó ablakot eredményez, azonban ha nem zárom be és görgetem a honlapot lefelé, akkor "jön vele az ablak" (újra és újra beúszik). Van arra mód, hogy ezt kikapcsolja és görgetéskör nem "jöjjön lejjebb" hanem maradjon az oldal tetjén?<script type="text/javascript" language="Javascript">
<!-- A popup lecsúszásának sebessége -->
var div = 10;
var sliderEnabled = true;
function scrFol()
{
var ad = document.getElementById( 'slider' );
var dPos = ( document.all ) ? document.body.scrollTop : window.pageYOffset;
if ( ( dPos == 0 ) && ( document.all ) )
dPos = document.documentElement.scrollTop;
dPos += 50;
var cPos = parseInt( ad.style.top );
if ( cPos == 0 )
cPos = dPos-1000;
var posDif = dPos-cPos;
if ( ( ad.style.display == 'none' ) && ( sliderEnabled ) )
ad.style.display = 'block';
if ( posDif > 0 )
ad.style.top = (cPos+Math.ceil(posDif/div))+'px';
else if ( posDif < 0 )
ad.style.top = (cPos+Math.floor(posDif/div))+'px';
if ( sliderEnabled )
setTimeout( 'scrFol()', 20 );
}
function closeFollowSlider()
{
sliderEnabled = false;
document.getElementById( 'slider' ).style.display = 'none';
}
<!-- A popup lecsúszásának késleltetése -->
setTimeout( 'scrFol()', 1000 );
</script>
<div id="slider" valign="top" style="border: 2px solid rgb(191, 0, 0); padding: 20px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; z-index: 999; display: none; position: absolute; top: 0px; left: 50px; width: 1055px;" align="left">
<img style="border: 0px solid ; width: 1013px; height: 582px;" alt="fb_popup" src="images/pop.jpg">
<div align="center"><a href="javascript:closeFollowSlider();"><img src="images/close.gif" border="0"></a></div> -
hiperFizikus
senior tag
válasz
instantwater #7815 üzenetére
https://www.w3schools.com/js
Ezt próbáltam . -
válasz
hiperFizikus #7812 üzenetére
Googlet próbáltad?
-
bandi0000
nagyúr
válasz
hiperFizikus #7812 üzenetére
-
hiperFizikus
senior tag
Melyik utasítással lehet egy karaktarláncot megfordítani ?
Nem találom .
-
Try4g4in
csendes tag
Sziasztok!
Ismerkedem a Google Maps API-val és egy olyan kérdésem lenne, hogy tudtok-e abban segíteni, hogy a Marker megjelenítésekor hogyan lehet kiíratni a címbe pl a keresésnél begépelt település nevét?
Így néz ki jelenleg a kód, de a title résznél a város neve nem jelenik meg
var city = document.getElementById('city').value;
var autocomplete = new google.maps.places.Autocomplete(input, options);
var marker = new google.maps.Marker({
map: map,
title: 'This is:' + city ,
label: {
color: 'red',
fontWeight: 'bold',
fontSize: '30px',
text: 'Hello world'
},
anchorPoint: new google.maps.Point(0, -29)
}); -
rollins
őstag
nem tudom, en full laikus vagyok
talán az Object.keys .values .entries hasznalható, kesőbb kipróbálom valami egyszerűbb objekt a tömben dolgon. -
rollins
őstag
Ilyen körülményes kiiratni az object literált a tömbböl? [link]
-
suits
tag
Hali!
Adott ez a végtelenül egyszerű kód!
Az lenne a kérdésem hogy ha a html-be a head-be rakom a .js fájl elérését akkor hibát jelez az addEventListener-nél.Gondolom gyorsabban lefut a script mithogy megtalálná a button az id szerint.Ha a body után rakom be akkor müködik.De eddig mindig csak a headbe láttam ilyen "script-linket".Szóval hogy szokták áthídalni ezt a problémát?A html-t nem szúrom be az csak egy sima skeleton html 2 input mezővel meg egy button-el.Java-ból jövök a Js+html még elég ismeretlen terület..
const button =document.getElementById('but');
button.addEventListener("click",fun)
function fun () {
let text1=document.getElementById('text1').value;
let text2=document.getElementById('text2').value;
let sum=Number(text1)+Number(text2);
alert(sum);
};
Új hozzászólás Aktív témák
Hirdetés
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Egy szenzor, két zoomkamera: újraírta a Huawei a mobilfotózás történetét
- Ford SYNC 3 infotainment rendszer teszt
- A fociról könnyedén, egy baráti társaságban
- Amazfit Balance - ár-érték egyensúly
- Bemutatkozott a Poco X7 és X7 Pro
- Székesfehérvár és környéke adok-veszek-beszélgetek
- Nintendo Switch 2
- Telekom mobilszolgáltatások
- Fujifilm X
- További aktív témák...
- Nintendo Switch bazár (Okosított Nintendo Switch konzolok, játékok, tartozékok)
- LG 77G3 - 77" OLED evo - 4K 120Hz 0.1ms - MLA - 2000 Nits - NVIDIA G-Sync - AMD FreeSync - HDMI 2.1
- AKCIÓ! Microsoft XBOX Series X 1TB SSD fekete játékkonzol garanciával hibátlan működéssel
- BESZÁMÍTÁS! GIGABYTE AORUS ELITE Z790 i7 14700K 64GB DDR5 1TB SSD 7900XTX 24GB be quiet! SB802 1000W
- 18 éve! Billentyűzet magyarítás magyarosítás. Festés vagy lézerezés és egyebek! 3 lehetőség is van.
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest