Autor Zpráva
pospyrus
Profil *
Dobrý den,
mám problém: nevim proč, ale tento script někdy funkuje a někdy ne. Je to ve fotogalerii a normálně to jede, ale občas nebo spíš často tam zůstane načítací obrázek a fotka se neobjeví, zkusím to znovu, třeba přes F5 a jede to. Nevíte někdo proč?:
<center><img src="/img/nacitani.gif" id="obr" onload="window.setTimeout('nacitani()', 1);"></center>

<script>
function nacitani() {
promenna = new Image();
promenna.src = "<?php echo($marray['url']); ?>";
promenna.onload = function () {
var ide="obr";
document.getElementById(ide).src=promenna.src;
var sirka = screen.width - 124;    
if (promenna.width > sirka) {
document.getElementById(ide).width=sirka;
};
var pscroll = <?php if (isset($_GET['scroll'])) {echo $_GET['scroll'];} else {echo(0);} ?>;
if (pscroll != 0) {window.scrollTo(0, pscroll);}
}}
</script>
<br>

<button style="position: fixed; top: 10; left: 50;" onclick="window.location.href='show.php?id=<?php echo($predchozi); ?>&scroll=' + document.body.scrollTop;">Předchozí</button>
<button style="position: fixed; top: 10; right: 50;" onclick="window.location.href='show.php?id=<?php echo($dalsi); ?>&scroll=' + document.body.scrollTop;">Další</button>

<script>
var s = 123;
function sipky(a) {
if(s==123) {
  if (a==37) {window.location.href='show.php?id=<?php echo($predchozi); ?>&scroll=' + document.body.scrollTop;}
  if (a==39) {window.location.href='show.php?id=<?php echo($dalsi); ?>&scroll=' + document.body.scrollTop;}
  if (a==27) {window.close();return false;} //esc
  }}
</script>
_es
Profil
pospyrus:
normálně to jede, ale …
A čo to má akože "normálne" robiť, ak to má pracovať tak, ako si predstavuješ?
Ak som tú funkčnosť správne pochopil tak by malo pomôcť:
- Celý blok kódu <script> premiestniť pred ten obrázok.
- V tom kóde premiestniť 6. riadok (promenna.src =…) až na koniec skriptu.
- Atribút onload toho obrázka zmeniť na: onload="nacitani();".
pospyrus
Profil *
tam se má načíst malej obrázek, kterej se točí pořád dokola, mělo by to znázorňovat načítání a poté se načíst novej obrázek (ta fotka) a po načtení změnit načítací obrázek na tu fotku...
Jenže v 1 ze 3 případů tam zůstane načítací obrázek a fotka se neukáže. Dám F5 a fotka se normálně načte...
_es
Profil
pospyrus:
No a tie tri kroky na odstránenie problému pomohli?
pospyrus
Profil *
teď to už nejde vubec

_es:
- Celý blok kódu <script> premiestniť pred ten obrázok.

A když to dám před obrázek, tak tam to načítání už nemusim dávat vubec, protože ta fotka se načte ještě dřív než se zobrazí to načítání

- V tom kóde premiestniť 6. riadok (promenna.src =…) až na koniec skriptu.

Když udělám toto, tak se vůbec nespusti funkce promenna.onload

tam se jednáo to, že to normálně funkuje, jenže tam v 1 ze 3 případů zůstane načítací obrázek a já nevim proč...
_es
Profil
pospyrus:
Nešpekuluj a skús aplikovať tie rady, je vidno, že tomu kódu veľmi nerozumieš. Myslel som aplikovať všetky kroky súčasne.
Pre istotu daj ešte atribút onload pred atribút src toho obrázka.
A ešte uprav 5. riadok na: var promenna = new Image();
6. riadok na koniec skriptu som myslel na koniec tej funkcie nacitani.
Keď to stále "nejde", tak daj odkaz na stránku s tým skriptom.

tam se jednáo to, že to normálně funkuje, jenže tam v 1 ze 3 případů zůstane načítací obrázek a já nevim proč…
Ja to viem, môže to nastávať v dôsledku viacerých vecí, ktoré tam máš zle či nevhodne.
Radšej to tu dám celé:
<script>
function nacitani(o) {
    var promenna = new Image();
    promenna.onload = function () {
        o.src=promenna.src;
        var sirka = screen.width - 124;    
        if (promenna.width > sirka) {
            o.width=sirka;
        };
        var pscroll = <?php if (isset($_GET['scroll'])) {echo $_GET['scroll'];} else {echo(0);} ?>;
        if (pscroll != 0) {window.scrollTo(0, pscroll);}
    };
    promenna.src = "<?php echo($marray['url']); ?>";
}
</script>
<center><img onload="nacitani(this);" src="/img/nacitani.gif" id="obr"></center>
Ešte neviem, prečo tam po nahratí ešte extra nastavuješ rozmery obrázka.
pospyrus
Profil *
jj, diky moc, již to bezvadně funkuje. rozměry tam mám proto, že pokud je fotka větší než monitor, tak se zmenší. Jo a poradítemi nějakej dobrej program na zmenšování kvality fotek? Protože se to načítá strašně pomalu. Děkuji
roumen
Profil *
IrfanView

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