Autor Zpráva
qwett
Profil *
pracuju s PoP-up okny (nebojte, neobsahujou reklamu a otevre se po kliknuti) ale je takove malo aktivni, akdyz ho mam otevrene a kliknu jinam tak mi spadne na listu, to prave nechci, chci abych kdybych klikl jinam tak aby se jen treba nastavilo jako neaktivni ale furt tam to okno zustalo...vite jak na to? ci de to vubec?
venca12
Profil
Na exploreru existuje funkce showModalDialog, která ti otevře okýnko jako modální. Ale funguje to jenom na něm. Tzn na jiých prohlížečích to asi neošetříš. Btw. to okno otevřené jako showmodaldialog se chová trochu jinak, než normální, má jíné parametry a jiná omezení. Doporučuji to, pokud nemusíš nepoužívat. (Pokud píšeš nějakou aplikaci na webu, tak to je zase celkem dobré). Pro otevření okna používám tuhle funkcičku:

// mod = true/false --- jestli je nebo neni modalni

function showModal(src, mod, w, h)
{
if ( mod )
{
if ( document.all )
{
var returnVal = window.showModalDialog("i"+src, "", "dialogWidth="+w+"px;dialogHeight="+h+"px;resizable=yes");
if ( returnVal == 'reload' ) window.location.reload();
}
else
window.open(src, "", "width="+w+", height="+h+", resizable=yes, menubar=yes, scrollbars=yes, toolbar=yes");
} else
{
window.open(src, "", "width="+w+", height="+h+", resizable=yes, menubar=yes, scrollbars=yes, toolbar=yes");
}
}
qwett
Profil *
bude tohle okno takove jake pozaduji? tj ze se po kliknuti jinam nespadne na listu ale zustane v pozadi?
Joker
Profil
qwett
V Internet Exploreru jsou modální dialogy, jak píše venca12. Pokud otevřete modální dialog, nemůžete s původním oknem stránky pracovat, dokud nezavřete ten modální dialog.

Ale bude to fungovat jenom pro Internet Explorer, ostatní prohlížeče nic nezobrazí a (do konzole) nahlásí chybu.
V koncepci prohlížečů jako Firefox nebo Opera, které používají záložky, si to ani moc neumím představit.

IMHO by nejlepší pro tenhle efekt bylo nejlepší to okno nasimulovat přes <div> napozicovaný přes normální obsah stránky.
qwett
Profil *
asi jo...pres ten div by bylo good, ale JS nerozumim a absolutne nefim jak nastavit ze by se po kliknuti zobrazil (pres PHP bych to zvladl ale nechci aby se mi stranka nacitala znova, musi to byt aktualni)
pomozt plsss
Joker
Profil
qwett
Tak zobrazeni DIVu přes JS je velice jednoduché, příklad:

<button onclick="zobrazDialog()">Zobrazit dialog</button>
<div id="dialog" style="display:none; position:absolute; width: 100%; height: 100%; background: grey;">
Toto je dialog
<button onclick="zavriDialog()">zavřít</button>
</div>

a příslušný javascript
//nejdřív obecná funkce pro načtení prvku, nějakou takovou používám ve všech skriptech pro získání prvku stránky
function nacti(prvek){
// načte objekt daného prvku z DOM
if(!prvek) return(false);
// moderní prohlížeče umí document.getElementById()
if(document.getElementById) return(document.getElementById(prvek));
// pro starší Internet Explorery přes document.all
if(document.all) return(document.all[prvek]);
return(false);
}

function zobrazDialog(){
// načteme příslušný objekt
var dialog = nacti("dialog");
// a zobrazíme
if(dialog && dialog.style) dialog.style.display = "block";
else return(false);
}

function skryjDialog(){
// načteme příslušný objekt
var dialog = nacti("dialog");
// a skryjeme
if(dialog && dialog.style) dialog.style.display = "none";
else return(false);
}
qwett
Profil *
diky moc :)
Chamurappi
Profil
Reaguji na vencu12:
Proč vážeš používání showModalDialog na podporu document.all? To si myslíš, že všechny prohlížeče, které document.all podporují (tj. Explorer, Opera, částečně Mozilla, iCab a kdo ví, co ještě), podporují i document.showModalDialog?
Už jsem ti jednou psal, že JavaScript je celkem slušný programovací jazyk a prasárny tohodle typu téměř nepotřebuje. Hacky se mají užívat v nouzi nejvyšší.

Reaguji na qwett:
To, co požaduješ, není modal dialog, ale modeless dialog. Explorer má metodu showModelessDialog, Mozilla podporuje totéž pomocí window.open s parametrem „dependent=yes“.

Tudíž jde ten microsoftí showModelessDialog celkem snadno doskriptovat:
<script>

if(!window.showModelessDialog)
{
window.showModelessDialog = function(url, args, features)
{
var param = features ? features.split(";") : [];
param[param.length] = "dependent=yes";
var translate = {
"dialogleft": "left",
"dialogtop": "top",
"dialogwidth": "width",
"dialogheight": "height",
"resizable": "resizable",
"scroll": "scrollbars"
};
for(var i = 0; i < param.length; i++)
{
var p = param[i].toLowerCase().split(":");
if(translate[p[0]])
{
p[0] = translate[p[0]];
param[i] = p.join("=");
}
if(param[i].substr(param[i].length - 2) == "px") param[i] = param[i].substr(0, param[i].length - 2);
}
return open(url, "", param.join(","));
};
}
</script>
Prostřední argument je sice k ničemu a pár dalších původních vlastností okna také nejede, ale základ je plně kompatibilní, na běžné užívání stačí.

Příklad užití:
showModelessDialog("adresa.html", null, "dialogleft:50px;dialogWidth:400px;resizable:yes")
venca12
Profil
Chamurappi ::: Skláním se před vaší velikostí ó velký vladaři a od teď už žádné document.all.
Toto téma je uzamčeno. Odpověď nelze zaslat.