Az oldal újratöltése + vissza ugrás ahol volt
Van egy oldalam dinamikusan létrehoz form ablakokat, amik rendelkeznek egyenként egy mentés gombbal.Majd végrehajtja feladatát és ujratölti az oldalt, hogy látszódjon mit történt.Majd az oldal tetején marad persze.
Azt szeretném, hogy oda ugorjon vissza ahol volt.
Találtam a neten pár kódott ami ezzel foglalkozik, de nem nagyon értek a JS-hez, így kellene egy kis segítség, hogyan kell őket alkalmazni.Tehát mégegyszer a probléma, hogy újratöltés után oda ugorjon vissza ahol volt, tehát abba a képernyő pozicióba, de előtte hajtsa végre a php kódott is. Nem gond ha közben scrolozik a képernyő, vagy villan.
Előre is köszönöm, a válaszokat.
■
<input type="submit" value="Mentés <?php echo $ablak_szam; ?>" name="ablak_szam[<?php echo $ablak_szam; ?>]" style="float:right;width:100px;height:25px;" />
<?php
if(@mysql_query($sql)){//mentés sikerült
$uzenet2 ='Mentés kész. ';
?>
<script type="text/javascript">
window.parent.location.href = "kepek_admin.php?text=<?php echo $_GET['text'] ?>";
</script>
}//f(@mysql_query($sql))
Azt szeretném, hogy oda ugorjon vissza ahol volt.
Találtam a neten pár kódott ami ezzel foglalkozik, de nem nagyon értek a JS-hez, így kellene egy kis segítség, hogyan kell őket alkalmazni.
<script type="text/javascript">
var nincs_diven = true;
function mutat_link()
{ document.getElementById("rejtett_link").style.visibility = "visible";
nincs_diven = false;
}
function rejt_link()
{ if (nincs_diven)
{ document.getElementById("rejtett_link").style.visibility = "hidden"; }
}
</script>
<!-- felgörgetés függvény -->
<script type="text/javascript">/* IE miatt kell */
function getYOffset()
{ var pageY;
if(typeof(window.pageYOffset)=='number')
{ pageY=window.pageYOffset; }
else
{ pageY=document.documentElement.scrollTop; }
return pageY;
}
/* léptetés kódja */
var mozgas;
function megall()
{ clearTimeout(mozgas); }
function laptetejere(end_pozicio)
{
var aktual_pozicio = getYOffset();
if (aktual_pozicio > end_pozicio)
{
window.scrollBy(0,-25);
mozgas = setTimeout('laptetejere('+end_pozicio+')',1);
}
else
megall();
}
</script>
<style type="text/css">
/*
.cim {
border: 1px groove black;
height: 150px;
width: 600px;
color: blue;
background-color: red;
padding: 0;
margin: 0;
}
*/
</style>
<script type="text/javascript">
/* Scroll-koordináták lekérdezése */
function get_scroll_positions()
{
var pageX;
var pageY;
if(typeof(window.pageXOffset)=='number')
{ pageX=window.pageXOffset; }
else
{ pageX=document.documentElement.scrollLeft; }
if(typeof(window.pageYOffset)=='number')
{ pageY=window.pageYOffset; }
else
{ pageY=document.documentElement.scrollTop; }
return {le:pageX,to:pageY};
}
/* GET-változók lekérdezése */
function get_Url_Vars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
/* aktuális scroll-koordináták lekérdezése, továbbítás GET-ként */
function get_kordinatak_send(vissza_all)
{
if (vissza_all)
{
var le_positions=get_scroll_positions();
var left = le_positions.le;
var top = le_positions.to;
window.location.href = 'linkvibral.html?l='+left+'&t='+top;
}
else
window.location.href = 'linkvibral.html';
}
/* adott scroll-koordináták beállítása */
function set_kordinatak()
{
var hash = get_Url_Vars();
var bal = (hash['l'] != undefined) ? hash['l'] : 0;
var font = (hash['t'] != undefined) ? hash['t'] : 0;
window.scrollBy(bal,font);
if ((bal != '0') || (font != '0'))
alert('Frissítés előtti pozició balról: '+bal+'px, föntről: '+font+'px');
}
</script>
<button type="button" class="sitetop" onClick="laptetejere(200)">Lap tetejétől 200px-re</button>
Előre is köszönöm, a válaszokat.
Szerintem neked ajax kell.
Az ajax kérés eredményét persze fel lehet dolgozni, azaz ha a php kód valamilyen hibával tér vissza, le tudod kezelni.
jQueryvel:
Ha location.href-fel mész új
Vagy a másik megoldás az AJAX, de akkor abba bele kell kicsit ásnod magad, ha még nem foglalkoztál vele.
Az AJAX-os megoldás több munkával járhat, mert jobban kell módosítani a szerveroldali fájlokat, továbbá a legtöbb esetben nagyobb kliensoldali rutinkönyvtár (pl. a fent említett jQuery) szükséges a kezeléséhez.
Nem megyek új oldalra!
A href ugyanerre az oldalra hivatkozik.
Az AJAX-ot nem akarom bele keverni ha lehetséges.
Csak egy js script kellene nekem, ami elmenti mikkor nyom egy gombot, az oldal y koordinátáját, lefutatja a phph-t, majd ha kész akkor újratölti az oldalt, és leugrik oda ahol az y megadja neki.
Én így képzeltem el.
Hacsak nem értem félre, hogy
Egy id-vel ellátott tagbe csomagolod azt, ahová ugrani akarsz és az oldal címének végére teszel egy #-t és mögé az id-t:
http://host/cim#111
Ha ez nem lenne elég, akkor még nézd meg a javascript focus() függvényét (illetve ez valamelyik JS objektum metódusa, ha egészen pontos akarok lenni)
Két okból nem ilyen egyszerű!
Tehát nem DIV-ben vannak.
Bocs most nézem, hogy a table is tartalmazhat id-t.
A másik hogy mint írtam, íg van az újrahívás:
Ez után kellen raknom még egy # ? Így?
kepek_admin.php?text=1#idnev
Mondjuk én becsomagolásról
<div id=...><table...></table></div>
Ami nem valami szép, de működőképes.
És igen, elég sok tag tartalmazhat id-t.
Megnéztem, így is a végére kell írni a #id-t.
Kipróbáltam..
window.parent.location.href = "kepek_admin.php?text=<?php echo $_GET['text'] ?>#<?php echo $ablakid; ?>";
Oda ugrik, de az oldal újrtöltést nem hajtja végre.
Az oldal url-je megváltozik?
Igen
Találtam egy ilyen megoldást: