Autor Zpráva
Argonisius
Profil *
Dobrý den,
chtěl bych se zeptat, jestli je možné, aby funkce window.open otevřela okno ve ve velikosti rovné velikosti obrázku (mám- li totiž obrázek v rozlišení 800x600 na šířku, musel bych udělat jinou funkci pro obrázek 800x600 na výšku). Případně jestli se dá udělat nějaký javascript na rozpoznání rozlišení obrázku, aby se pak následně obrázek otevřel v okně 800x600, nebo 600x800 podle toho, jestli je na šířku nebo na výšku.

Díky.
Měsíček
Profil
Druhá část je skoro popsána zde

http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=8&topic=49 050

První část budeš muset nejspíše udělat pomocí jiného jazyka (PHP) pro zjištění velikosti obrázků (možná to jde i v JS, ale o tom jsem nikdy neslyšel).

V PHP by to šlo něják tak ..

$velikost = getimagesize($adresa_org);
$sirka = $velikost[0];
$vyska = $velikost[1];
Str4wberry
Profil
Pokud jsou rozměry zadány v HTML kódu, což je vhodné, tak je můžete jednoduše použít jako parametry té funkce, která otevírá nové okno.
Argonisius
Profil *
Pro Měsíčka: Myslíš že bys mi to mohl popsat podrobněji?
japlavaren
Profil
ja by som to riesil 2 sposobmy:
1. priamo na odkaze obrazku by som mal onclick='return obrazok(400,300)'; a funkcia by otvorila pozadovane okno
2. do stranky by som si ulozil pole - nazov obrazku a rozmery. na obrazku by som mal onclick='return obrazok(this)' a funkcia by s pova vybrala ten spravny a otvorila ho


prve riesenie je jednoduchsie, uvadzam jeho riesenie:

<?php
$obrazky=array('1.jpg', '2.jpg', 'cica.jpg', 'posledny.jpg');
$priecinok='./obrazky';
$priecinok_male="$prieconok/male";

foreach($obrazky AS $nazov)
{
    $velkost=getimagesize("$priecinok/$nazov");
    
    echo "<a href='$priecinok/$nazov' onclick='return otvor(this.href, $velkost[0],$velkost[1]'><img src='$priecinok male/$nazov' /></a>\n";
}
?>

<script type='text/javascript'>
function otvor(adresa, sirka, vyska)
{
    window.open(adresa, '_blank', 'width='+sirka',height='+vyska);
}
?>


dufam ze ta nemam preklep
peta
Profil
Argonisius
Rozmer obrazku ve fotogalerii obvykle muze byt napriklad 1024x768 nebo na vysku. Jakykoliv jiny rozmer mimo prave tebou zvoleny jednotny rozmer pusobi dojmem amaterstiny.
Bubák
Profil
peta
Rozmer obrazku ve fotogalerii obvykle muze byt napriklad 1024x768 nebo na vysku. Jakykoliv jiny rozmer mimo prave tebou zvoleny jednotny rozmer pusobi dojmem amaterstiny.

A co píše Argonisius?
aby se pak následně obrázek otevřel v okně 800x600, nebo 600x800 podle toho, jestli je na šířku nebo na výšku.
bohyn
Profil *
Jestli klikas na thumbnail tak proc to nezjistis podle rozmeru thumbnailu? (pokud teda u nahledu zachovavas pomer stran).

treba:

<a href='URL' onclick='return !otevri(this);'><img src='obrazek' width='100' height='75' /></a>

<script type='text/javascript'>
function otevri(obj) {
var sirka, vyska;

// pozor na to aby byl obrazek prvnim potomkem
// takze zadne mezery mezi <a> a <img>
sirka = obj.firstChild.width < obj.firstChild.height ? 600 : 800;
vyska = obj.firstChild.height < obj.firstChild.width ? 600 : 800;

return window.open(adresa, '_blank', 'width='+sirka',height='+vyska);
}
</script>
imploder
Profil
Jestli klikas na thumbnail tak proc to nezjistis podle rozmeru thumbnailu? (pokud teda u nahledu zachovavas pomer stran).
Poměr stran nestačí, muselo by se zachovávat i měřítko (a to se normálně u thumbnailů nezachovává). Z poměru stran by se dal odvodit jenom poměr stran potřebného okna, ne jeho velikost.
bohyn
Profil *
Oprava:
return window.open(obj.href, '_blank', 'width='+sirka',height='+vyska);
bohyn
Profil *
Poměr stran nestačí, muselo by se zachovávat i měřítko (a to se normálně u thumbnailů nezachovává). Z poměru stran by se dal odvodit jenom poměr stran potřebného okna, ne jeho velikost.
Pokud ma jednotou velikost obrazku jak piste tak to bude fungovat
Argonisius
Profil
Dobrý den, tak mám toto, ale bohužel mi to nefunguje a nevím proč. Poradíte?
<?php 
$pocet_obrazku = 19; 
$nazev_akce = "Fotogalerie";
$slozka_nahledy = "miniatury";
$slozka_velke = "velke";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="cs" xml:lang="cs">

<head>
<title><?php echo "$nazev_akce" ?></title>
<meta http-equiv="Content-type" content="text/html; charset=windows-1250"/>
<meta http-equiv="Content-Language" content="cs"/>

<script type='text/javascript'>
function zvetsit(adresa, sirka, vyska)
{
    window.open(adresa, '_blank', 'width='+sirka',height='+vyska');
}
</script>

</head>
<body>

<?php echo "$nazev_akce" ?>

<?php 
$obrazek = 1; 

while ($obrazek <= $pocet_obrazku)
{
$velikost_nahled = getimagesize("$slozka_nahledy/${obrazek}.JPG");

$velikost_velke = getimagesize("$slozka_velke/${obrazek}.JPG");

echo "<a href=\"javascript:;\" onclick=\"zvetsit($slozka_velke/${obrazek}.JPG,$velikost_velke[0],$velikost_velke[1])\"><img src=\"$slozka_nahledy/${obrazek}.JPG\" alt=\"${obrazek}.JPG\" $velikost_nahled[3] />";

++$obrazek;

}
?>

</body>
</html>


Díky.
Argonisius
Profil
Opravdu mi nikdo nemůže pomoct? Asi bude chyba v syntaxi javascriptu.... Díky
Chamurappi
Profil
Reaguji na Argonisiua:
Ano, chyba je v syntaxi JS.

zvetsit($slozka_velke/${obrazek}.JPG,$velikost_velke[0],$velikost_velke[1])
Řetězce se v JS (jako ve většině jiných jazyků) musí něčím obalit, aby se poznalo, že jsou to řetězce. Obal jméno souboru do apostrofů.
tiso
Profil
Tých chýb tam je viac, taký riadok 20.. Treba si naštudovať ako fungujú úvodzovky.
Argonisius
Profil
Tak, už to funguje, ale pořád je tam někde chyba - výška okna není správná, asi zase špatný zápis....

Tady jsou výřezy scriptů, kde asi bude chyba:

php:
echo "<a href=\"javascript:;\" onclick=\"zvetsit('$slozka_velke/${obrazek}.JPG', '$velikost_velke[0]', '$velikost_velke[1]');\">

js:
window.open(adresa, 'okno', 'width='+sirka, 'height='+vyska);


Nenapadá mě nic, kde by mohla ta chyba být, nevíte?
Argonisius
Profil
Chyba bude tady:
width='+sirka, 'height='+vyska
ale jak ji napravit? když tam dám apostrof 2x za sebou, tak nefunguje...

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0