Erre találták ki a százalékos méretmeghatározást, de ha programból akarod, akkor az előző programocska bizonyára segít (a resize függvényt tanulmányozd).
Sajnos öregszem, nem mindíg tudok világosan fogalmazni.
Az alapötlet az volt, hogy egy javascript függvény megállapítja a felbontást, és annak ismeretében adja meg a betöltendő kép új méreteit. Felhasználói beavatkozás
Ez a méret nem felel meg az adott felbontásanak, annak ismeretében más méretekkel kellene a képet betölteni.
Erre jöt az ötletem, s kérdeztem, hogy megvalósítható e valahogy.
<img src="kep.jpg" alt="" title="xy" border="0" style="width:javascript:uj_meret(500);height:javascript:uj_meret(168);"> (ez most szintaktikailag nem helyes)
A lényeg, nem fix méret, hanem függvénnyel előállított mérettel kellene a képet betölteni.
Köszönöm. Ezt napok óta próbálom, de nem működik. lehet hogy szintaktikai hibám van.(width idézőjellel kezd, javascript idézőjelben,) Nem kerül a függvényre a vezérlés. Onclickre működik, a függvény jó értéket ad.
Meg lehetne e azt csinálni, hogy az img width, height értékeknek javascript funkcióval adjak értéket. Figyelembe véve azt, hogy -megbízható források szerint- a scriptek(function) csak valamilyen eseménykor futnak.(onclick,onload,onmouse... stb) Az onload úgy tudom, amikor az image már betöltődött, akkor keletkezik.
Valahogy betöltődés előtt kellene értéket adni a width, height értékeknek.Pl. width:javascript:meret1(); height:javascript:meret2(); Köszönettel m_kovacs
Köszönöm válaszát.Fárasztó volt ez a nap, meg a hőség is nyomja az agyamat, lehet hogy ezért, de első olvasatra nem kristálytiszta számomra a javaslata.
Ha a 'masvalami.html' egy konstans hivatkozás, akkor nem vagyok előbbre. Alszom rá, hátha megvilágosodom.
Ez a sor működik! DE én a felbontástó függően a href-be dinamikusan szertnék file-nevet generálni.Na ez már nem működik. A file-név megszületik, létező file, csak nem tudom hogy kell rávennem, hogy betöltődjön.
Nem. Két okból: egyfelől honnan tudnánk, hogy 1 másodperc, több, mennyi? Másfelől, a böngészőben a JS egy szálon fut. Szigorúan tilos megvárakoztatni, mert akkor nem reagál a felhasználóra. Éppen ezért nincs is olyan a JS-ben, amivel tudnál várakozni (van egy időzítő, de az is visszahívással operál, tehát semmivel nem vagy előrébb, sőt, mint a korrekt módon).
Jobb ehhez hozzászokni már a kezdet kezdetén, mert ahogy mondtam, minden így megy a JS-ben; úgysem lehet kikerülni.
1. lépés
2. lépés
3. lépés: visszahívás = (
4. lépés
5. lépés
6. lépés: visszahívás = (
7. lépés
8. lépés
9. lépés
)
)
Mindened alapvetően ilyen lesz, sőt, még ilyenebb, mert közben a hibalehetőségeket is le kell kezelned, hogy mi van, ha valamelyik lépés nem sikerült...
Egyébként, amibe ilyenkor bele szoktál futni, az a JS aszinkron működése. Ez néha jól jön, néha kifejezetten kellemetlen, de akárhogy is van, a JS ilyen, ezt számításba kell venni. Ha veszel egy ilyen elvi utasítássort:
1. csinálunk egy képet
2. beleolvasunk valamit
3. lekérdezzük a méretét
4. csinálunk vele valamit
az nem fog működni. Ugyanis a 2. elmegy valahova a háttérbe beolvasni, de te rögtön továbblépsz a harmadikra, és amikor lekérdezed a méretét, az a kép még messze nem olvasódott be, tehát nem fogsz érvényes értéket kapni vissza. A JS-ben minden ilyesmit így kell megoldani:
1. csinálunk egy képet
2. megkérjük, hogy olvassa be.
2a. megmondjuk, hogy majd ha beolvasta, hol szóljon vissza, hogy értesítsen az eredményről
3. egyébként továbbmehetünk, és csinálhatunk mást, de nem függhetünk a 2a eredményétől
Ha például úgy kell továbbmenned, hogy igenis szükséged van a beolvasás eredményére, akkor nincs 3. pont. Akkor a 2a-ban kell felhasználnod az eredményt, és ott menni tovább annak ismeretében.
Nem, nem lehet. És végig a böngészőben levő méreteket kérdezgeted, nem a kép tényleges méretét (ha arra van szükséged), tehát ez így, ahogy van, nem is fog menni soha.
És újfent elmondom, amit már annyiszor: szerintem, aki kezdő JS-ben, az is csak jQuery-vel próbálkozzon. Régóta nincs már semmi értelme a nyers JS dolgaival bajmolódni.
Megint elakadtam.Így már működik FF alatt.Viszont Google Crome ban a működése kiszámíthatatlan. Mivel ez a funkció többször futhat egymás után,kiszámíthatatlanul a Crome-ban az utolsó két sor időnként 0-át ad. IE10 alatt ki sem tudom próbálni, az meg a window.open.... re allergiás. Most olvasok,olvasok,olvasok...(és anyázok!) Köszönettel m_kovacs
function popuponclick(param1) // a param1 a kép URL-je { var param=param1; var newImg = document.createElement('img'); newImg.setAttribute('id', 'kep'); newImg.setAttribute('src',param ); if (!document.getElementById('kep')) document.body.appendChild(newImg) ; else { var element = document.getElementById("kep"); element.parentNode.removeChild(element); document.body.appendChild(newImg) ; } var kep_width=document.getElementById("kep").width ; var kep_height=document.getElementById("kep").height ;
Megint elakadtam. Kérdés:lehet e egyáltalán javascript-ben lekérdezni egy,még be nem töltött kép méreteit?
Igy próbálkoztam: (részlet)
function popuponclick(param1) // a param1 a kép URL-je { var param=param1; var newImg = document.createElement('img'); newImg.setAttribute('id', 'kep'); newImg.setAttribute('src',param ); alert(param); alert(newImg.id); alert(newImg.src) ; var kep_width=document.getElementById('kep').width ;
Sajnos az utolsó sorra nyelvet öltött, s ezt üzente: "document.getElementById(...) is null"