Autor Zpráva
JohnBruk
Profil
zdravím, prosím chtěl bych se zeptat, jak u tohoto scriptu (jestli to jde)

<script language="JavaScript">
<!-- schovej
// otevri nove okno
function JSL(mypage, myname, w, h, scroll)
{
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scro ll+',resizable'
win = window.open(mypage, myname, winprops)
if (parseInt(navigator.appVersion) >= 4)
{
win.window.focus();
}
}
// zobraz -->
</script>


; odkaz je svázán definován :

<a href="javascript:JSL('cilovy.jpg?OpenElement','',620,500,'yes');"><img src="odkazovy.jpg?OpenElement" border="0"></a>

-lze zadat, aby se otevírané okno nadefinované javascriptem přizpůsobovalo velikosti obsahu stránky - konkrétně obrázku ?

....již mně moc nebaví definovat každý odkaz zvlášť...ušetřilo by to spoustu práce....
(tento způsob v tomto případě neužívám na internetu - ale v cd prezentaci!)
předem dík
honza
Fred
Profil
Nejsem si jistý, ale myslím si že by šlo vázat velikost toho okna na velikost toho thumbnailu z kterýho se to otevírá. Myslím, pokud je thumbnail oproti zvětšenině vždy ve stejném poměru např:
thumb : 200*100
náhled: 800*400
pak je to násobek 4 a šlo by se navázat na velikost toho thumbu tzn. otevřít okno s height=4*height thumbnailu atd. ....
JohnBruk
Profil
to fred : yo to zní good...y myslim, že by to mohlo snad i jít...ale...škoda., že ty náhledy nemám v poměru...takže by tohle asi aplikovat nešlo...škoda...ale díky za nápad..:-)
Fred
Profil
Prakticky mi to trochu trvalo :-) tohle je pro případ, že velký obr je 4x větší než thumb
<script language="JavaScript">
<!-- schovej
// otevri nove okno
function JSL(mypage, myname, lll)
{
var w = lll.firstChild.getAttribute('width')*4;
var h = lll.firstChild.getAttribute('height')*4;
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars=yes,re sizable';
win = window.open(mypage, myname, winprops)
}
// zobraz -->
</script>
<a href="#" onclick="JSL('about:blank','jmeno',this);" ><img src="mail.png" alt="mail" width="160" height="21" /></a>
habendorf
Profil
JohnBruk: možná by ti mohlo pomoci toto: http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=2159&forum =3&page=-1

A ještě: myslím že než
<a href="javascript:JSL('cilovy.jpg?OpenElement','',620,500,'yes');">

je lepší použít
<a href="#" onclick="JSL('cilovy.jpg?OpenElement','',620,500,'yes') return false">
Leo
Profil
V principu jde zjistit JavaScriptem rozmery obrazku v pixelech a podle nich upravit velikost okna, problem je ale v tom, ze to JavaScript spolehlive zjisti az na udalost onload toho velkeho obrazku - jinak receno se musi nejdriv stahnout ze serveru a to chvilku trva. A ted mate dilema, pokud to nechate jen na JavaScriptu:

1, Kliknutim na odkaz se hned neotevre nove okno, ale nejdriv se "na pozadi" stahne obrazek, ochucha jeho velikost a pak teprve podle ni otevre okno / uzivatel bude zmateny proc klikani na odkaz nic nedela

2, Otevrete nove prazdne okno v nejake velikosti, pak do nej stahnete obrazek, a teprve az dorazi tak upravite okno / neco se deje hned, ale neni to moc elegance, ze...

O prasarnach typu <a href="#" se ani sirit nebudu... Leo

Leo
habendorf
Profil
O prasarnach typu <a href="#" se ani sirit nebudu... Leo

No pořád lepší než <a href="javascript:...
Možná že než takováto odpověď by bylo lepší poradit, jak na to lépe.
IMHO nejlepší je <a href="cilovy.jpg" onclick="JSL('cilovy.jpg?OpenElement','',620,500,'yes') return false">, aby to i při vypnutém JS udělalo aspoň něco.
Leo
Profil
Jak na to lepe? Polozit si nejdriv otazku co se ma dit kdyz bude vypnuty javascript a podle toho udelat href odkazu - bud v nejhorsim povede na samotny velky obrazek, nebo na webovou stranku s velkym obrazkem. No a pak odchytit udalost onclick a otevrit okno - respektive se o to pokusit. Pokud se otevre tak vratit false, pokud ne vratit true. Velikost noveho okna a to, co se v nem ma otevrit je jina vec. Leo
Fred
Profil
Leo No mě se taky nelíbilo přesně to co Habendorfovi, jenom jsem mlčel, protože tady šlo o příklad a že jsem použil href="#" to neznamená, že bych to použil v praxi. Dle mého skromného názoru je pěkná hovadina používat jakkékoliv popup okno. Na to nemusí být vypnutý javascript. Mám na počítači pěknou sbírku prohlížečů a ani jeden to neotevře, pokud mu to výslovně nepovolím. Firefox a Mozilla zakázáno, je-li galerie v popupech použiju prostřední kolečko myši. IE blokováno toolbarem (někteří blokováno SP2) , otevřu pravou myší v novém okně. Opera otevře se to jak v popup tak v novém tabu, zavřu popup a jedu prostřední myší. Maxthon blokováno, taktéž prostřední. Zkoušel jsem Addmuncher , blokoval popupy, zkoušel jsem různé firewally blokovaly popupy, testoval jsem několik lišt blokovaly popupy. Docela by mě zajímalo jestli se dá nějak objektivně změřit kolik návštěvníků má dnes povolené popup okna ?? Ale to se tady víceméně už jednou řešilo http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=1966&forum =8&page=-1 . Mám docela rád javascript a jeho možnosti, je ale smutné kolik lidí dneska při vyslovení slova javascript křičí Apage satanas a je to jen kvůli nevhodnému použití a to si myslím, že právě popup je. Příště si dám pozor abych někomu neúmyslně radil nevhodný href="#" .
IMHO ten script co jsem vybastlil výše by tedy trochu lépěji měl vypadat nějak takhle, s tím že je třeba taky vyhodit cokoliv z js do externího dokumentu, stejně jako v css ( tzn. i onclick="udelejneco()" ) , a nakonec je to v tomhle případě stejně k ničemu z důvodů časté blokace popupů jak jsem psal výš.

function okno(toto){
var w=toto.firstChild.getAttribute('width')*4; //4 je poměr velikosti thumbnailu k velkému obrázku
var h=toto.firstChild.getAttribute('height')*4;
var kde=toto.href
var winl=(screen.width-w)/2;
var wint=(screen.height-h)/2;
winprops='height='+h+',width='+w+',top='+wint+',left='+winl+',scrollba rs=yes,resizable';
win=window.open(kde,'jmeno',winprops)
}
function udelejto(){
var co=document.getElementsByTagName('a');
for(var i=0;i<co.length;i++){co[i].onclick=function(){okno(this);return false;}}}
//onload funkce http://www.scottandrew.com/weblog/articles/cbs-events
function addEvent(obj,evType,fn){
if(obj.addEventListener){
obj.addEventListener(evType,fn,true);
return true;
}else if(obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
}else{
return false;
}}
addEvent(window,'load',udelejto);

<a href="obr1.htm"><img src="obr1.png" alt="mail" width="160" height="21" /></a>
<a href="obr2.htm"><img src="obr2.png" alt="mail" width="21" height="50" /></a>
Leo
Profil
No ja jsem samozrejme taky proti otevirani novych oken, ale to neres(i)me. Leo
Leo
Profil
Mel byste jeste otestovat jestli se nove okno skutecne otevrelo, a pak vratit false nebo true misto tvrdeho

okno(this); return false;

Leo
JohnBruk
Profil
to all: tedy mooc vám děkuji...včera jsem tady zrovna nebyl...a dívám se kolik je tady příspěvků....myslim, že řešení je na nasnadě...mooc díky všem :-) !!
JohnBruk
Profil
no doufám, že mě nebudete kamenovat...ale zapomněl jsem napsat, že toto řešení potřebuji pro flashovou prezentaci (jaj...jsem to ale blb )...každopádně..nenapadá mně lepší řešení na otevření fulll obrázku než v pop-up okně....tohle mně na flashi vadí....práce s většími obrázky....v html bych to moc složitě řešit ani nemusel... .-/
JohnBruk
Profil
každopádně určitě to ve flashi půjde použít ;-) ještě jednou díky..
Leo
Profil
Myslite Flash na webove strance nebo ne? Leo
JohnBruk
Profil
to Leo : Flash *.exe samospustitelná prezentace...takže je blbé, že nepůjde hodit definici scriptu do onoho *.html ...Je to flash prezentace na CD (nemusí se to tedy přizpůsobovat návykům na netu)
btw : to Leo....tykání ne ? :-)
JohnBruk
Profil
nevím...v tomto případě...snad...šlo by nějakým způsobem volat script přímo z odkazu?...vim už jste to tady nastiňovali...ale nemám s tím přímo zkušenosti...jak by se to v praxi dalo použít?-pls..přesněji ?
Leo
Profil
No to jste mozna mel rict na zacatku, ze na webu o webu nemluvite o webu, ale o uplne jinem programu... To je dost smula, musite udelat "nove okno" proste primo ve Flashi - novou vrstvu, Leo
JohnBruk
Profil
to Leo : už jsem psal, že jsem blb....přiznávám... ale s tou novou vrstvou....chápu....nevím, jestli by to bylo ideální....ty obrázky jsou mnohdy větší jak 1600x1200
Toto téma je uzamčeno. Odpověď nelze zaslat.