« 1 2 »
Autor Zpráva
Tinny
Profil *
Ahoj,
oč mi jde je patrno z přiloženého zdrojáku. Po změně velikosti okna uživatelem by se měla přepočítat nějaká hodnota a ta se pak projevit. Jedinou funkci, kterou jsem byl schopen vymyslet je reload stránky, i když by bylo lepší jen nějaké přepočítání a překreslení, což asi neexistuje.

V IE to bez problému funguje, ale v prohlížečích typu Mozilla ne. Je tam nějaká formální chyba nebo je to celé špatně? Jak na to?
<HTML><HEAD><SCRIPT type="text/javascript">

window.onresize = reloudni;

function reloudni() {
location.reload();
}

function text() {
if (window.innerHeight) { sirka=window.innerWidth} else { sirka=document.body.clientWidth}
document.write(sirka);
}
</SCRIPT></HEAD><BODY>
<script language="javascript"><!--
text();
//-->
</script>
</BODY></HTML>
habendorf
Profil
1) window.onresize = reloudni();
2) nejsem si moc jistý tím innerHeight a innerWidth
Leo
Profil
window.onresize = reloudni

bez () je ok, neni to volani fce, chyba bude jinde, ale dnes po ranu mam vypadly mozek, Leo
Fred
Profil
http://www.themaninblue.com/experiment/ResolutionLayout/
Tinny
Profil *
Bez závorek je to správně; funkce sama běží, jen to neudělá reload ve Firefoxu; Si to zkuste v IE a Firefoxu...

Na ověření stačí text:


window.onresize = reloudni;


function reloudni()
{
location.reload();
window.alert("test");
}
Tinny
Profil *
a ještě dodatek... problém se vůbec netýká zjištění šířky okna, to funguje bezvadně; Jde jen o ten reload;

Jen pro úplnost:
"window.innerHeight" podporuje NN, Mozilla a spol.; IE ne;
"document.body.clientWidth" podporují nové verze Mozilly a Firefox (ale ty to načtou z první fce) a IE;

mimochodem IE to bere jen skutečnou vnitřní šířku okna, ale "Mozilla spol." do toho rozměru počítá i šířku posuvníkové lišty... (asi proto, že ji nezobrazuje, když není potřeba); Trochu to tím komplikuje,
ale při nehorším se to dá předem odečíst;

Každopádně teď mi pomozte prosím vyřešit, proč neudělá "Mozilla spol" ten reload; díky .o)
Fred
Profil
document.location.reload()
Leo
Profil
Zkusil bych location.reload(true), pokud je problem v kesi, Leo
Tinny
Profil *
Obě možnosti a jejich kombinace jsem zkoušel už dříve; V IE to vždy jde a jinde ne;
(Testoval jsem to dokonce i na NN7, Mozilla 1.3 a v tom Firefoxu... což je víceméně skoro stejný prohlížeč); Zkrátka nevím, jak tyhle prohlížeče donutit reloadnout nebo refreshnout stránku...
Zkuste si to na svém Pc, okopírovat zroják do souboru moc času nezabere...
Fred
Profil
Mě to normálně jde , bude tam nějaká jiná chybka, funguje jak location.reload() tak document.location.reload() test mění pozadí na reload tím pádem i na resize
Tinny
Profil *
no, zajímavé. Já se ale nesnažím vyvolat nějakou akci reloadnutím. Chci vyvolat pomocí události resize akci reload...
Leo
Profil
Zkuste neco ve stylu

window.location.replace(window.location.href);

Funguje i ve FF.

Jinak se zda, ze IE pri zmene velikosti okna tu fci reloudni vola vickrat!
Fred
Profil
Teď už nechápu o co ti jde, pošli sem celý zdroj, na tom testu co jsem uploadnul je funkce, která na loudnutí vybere náhodný obrázek na pozadí , nic víc. Na onresize je přidaná ta tvoje funkce a co to dělá ? Nic jiného, než , že když změním velikost okna, vymění obr na pozadí. Co to znamená- že to funguje. To znamená chyba je jinde. Proto nerozumím proč opakuješ dotaz , hledej chybu jinde než jsi hledal a u sebe.
Tinny
Profil *
Pes bude zakopaný někde jinde... když location.reload vyvolám třeba kliknutím, tak se stránka reloadne;
Když tu funkci vyvolám přes událost resize, tak se stránka nehne;


<HTML><HEAD><SCRIPT type="text/javascript">
window.onresize = reloudni;

function reloudni() {
window.location.reload()
window.alert(sirka)
}

function text() {
if (window.innerHeight) { sirka=window.innerWidth} else { sirka=document.body.clientWidth}
document.write(sirka);
}
</SCRIPT></HEAD><BODY>
<script language="javascript"><!--
text();
//-->
</script>
<A href="" onClick="window.location.reload()">aaa</A>
</BODY></HTML>
Fred
Profil
Spíš se zdá, po té co jsem to shlédnul v IE, že IE6 tady má evidentně nějaký problém, který se v IE5 a IE5.5 nevyskytuje, reloaduje to totiž pořád dokola, BTW co si představuješ pod pojmem reload ?
Přihodil jsem tam na onresize function reloudni(){setTimeout('document.location.reload()',1000);} , aby to nedělalo ten stroboskop a IE6 opravdu reloaduje každou vteřinu. Místo, aby se reloadovalo na onresize!
Tinny
Profil *
tohle zabralo...

function reloudni() {
window.location.replace(self.location.href);
}

díky :o)
Teď ještě jesli je to správně po formální stránce...


Frede, tvůj soubor mi fungoval jen na manuální reloadnutí, na resize okna mi to nedělalo nic;
Fred
Profil
Jasně chyba je jinde

function reloudni() {
window.location.reload()

}
function overit(){
if (window.innerHeight) {sirka=window.innerWidth}
else {sirka=document.body.clientWidth}
window.alert(sirka)
}


window.onresize = reloudni;
window.onload = overit;
Leo
Profil
Taky jsem si vsiml, z IE reloaduje asi petkrat za sebou :-) Mozna by stacilo poslat z fce treba return false, to zabira na dost veci, kdo vi, Leo
Tinny
Profil *
Frede, jo všimnul jsem si, že tvá původní verze byla v IE6 nepoužitelná, šlo to pořád dokola.
Reload - pod tím myslím znovunačtení stránky; I když pro můj účel by bylo lepší, kdyby jen překreslil obsah okna podle nových parametrů a netahal nic znova z cache...
Fred
Profil
?Frede, tvůj soubor mi fungoval jen na manuální reloadnutí, na resize okna mi to nedělalo nic; ?
Opera 7.23,7.5,8 beta OK
K-meleon 0.7,0.9 OK
Netscape 7.0,7.2 OK
Firebird 0.7 OK
Firefox 1.0 OK
Mozilla 0.7 OK
IE 5,5.5 OK
IE6 problém pospaný výš
Leo
Profil
No ona i ta moje verze v IE6 je v tomhle smeru nepouzitelna, nejak ma zmatek v udalosti onresize, Leo
Fred
Profil
Dobře tohle je dejme tomu vyřešený, ale co myslíš tím překreslil obsah okna podle nových parametrů , mám dojem, že by to šlo řešit jinak. Nepotřebuješ náhodou spíš něco jako http://www.alistapart.com/articles/footers/
Tinny
Profil *
Dej mi link na tu novou verzi, Frede. Ještě to teda zkusím.
Jinač u poznámky "Jasně, chyba je jinde" jsem nic zajímavého a přínosného neshledal.
Fred
Profil
http://xy.wz.cz/change-image-onreload/alert.htm
Tinny
Profil *
mňo.. tak jsem si odskočil pro jistotu i na jiný comp, kde mám w98 a výsledek testování Fredova posledního souboru je následující (funkčnost se testovala změnou šířky okna tažením okraje myší):

IE 6.028 - OK
Firefox 1.0 - ne (čistá nová instalace beze změn v nastavení)
Mozilla 1.6 - OK
Mozilla 1.3 - OK
Mozilla 1.2 - OK
Netscape 7.0 - OK
Netscape 6.2 - OK
Netscape4.5 - OK(!)
Opera 7.0 - OK
Opera 6.05 - ne
Arachne jsem radši nezkoušel;
Fred
Profil
Jsem tu s Firebirdem, Firefox 1.0 nemám, ale díval jsem se ve Firefoxu 1.0 preview release a je to v pohodě, není náhodou špatně nainstalován?
Tinny
Profil *
Já ti to věřím. Jenže u mě to v tom Firefoxu nejde. Záhada. Nevim proč, taky jsme přemýšlel, jestli není špatně nainstalovaný, nebo nemá zakázané nějaké funkce kvůli bezpečnosti... na jednom kompu jsem ho i přeinstaloval. Na jednom jsou WinXP na druhým W98, na obou je instalovaný bez potíží, česká verze, žádné nastavení jsem neměnil a všechny funkce JS a javy jsou povolený... :-/
Fred
Profil
Hmm , tak to mě trochu nas* , nainstaloval jsem si 1.0.1 a fakt mi to nejede, jenomže, problém bude, nekompaktibilnost některých rozšíření, u mně je to konkrétně tenhle problém


Chyba: uncaught exception: [Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getBoolPref]" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: chrome://flashblock/content/flashblock-prefs.js :: isEnabled :: line 8" data: no]


Podívej se v nástrojích do Konzole jazyka Javascript a hoď sem co Ti to píše, to že máš čistou instalaci, ještě neznamená že čistá je , jestli se přetahovali nějaké add-ons problém bude tam.

Oprava všeho výše, odinstaloval jsem konfliktní Flashblock a opravdu to nefunguje, tak to je na bugreport, BTW konzole JS nic nehlásí :-( , to mám teda radost, mám moc rád nepředložené chování prohlížečů , měl jsi pravdu!!!
Fred
Profil
Tady mi to funguje drubez-vaigl.cz
Tinny
Profil *
Jinač jsem od začátku potřeboval spíš tohle. :-))
Díky za ten link na stránku s tou patičkou!




<HTML><head>
<style type="text/css">
<!--
#footer {border:solid 2px red; float:left; height:200px}
-->
</style>

<script type="text/javascript">
<!--
function getWindowWidth() {
var windowWidth = 0;
if (typeof(window.innerWidth) == 'number') {
windowWidth = window.innerWidth;
}
else {
if (document.documentElement && document.documentElement.clientWidth) {
windowWidth = document.documentElement.clientWidth;
}
else {
if (document.body && document.body.clientWidth) {
windowWidth = document.body.clientWidth;
}
}
}
return windowWidth;
}

function setFooter() {
if (document.getElementById) {
var windowWidth = getWindowWidth();
var footerElement = document.getElementById('footer');
var footerWidth = footerElement.offsetWidth;
footerElement.style.width = (windowWidth/4) + 'px';
}
}

window.onload = function() {
setFooter();}
window.onresize = function() {
setFooter();}
//-->
</script>

</head><body>

<div id="footer">Footer</div>

</body></html>
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.

0