 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
MasterPhoton
Data înscrierii: 06/Mar/2003
Mesaje: 437
|
| Trimis: Mar Iun 28, 2005 12:56 pm Titlul subiectului: Stop unload |
|
|
Salut,
Am o pagina cu un formular si nenumarate linkuri in meniu (care meniu se schimba FOARTE des).
Vreau sa verifica daca vreunul din valorile din formular a fost MODIFICAT (asta am reusit sa fac), si daca da sa afisez un confirm cu optiuni OK/cancel (am facut), si sa salvez daca apasa pe OK (am facut). Problema este urmatoarea:
- check_form se declanseaza la body onUnload, pentru ca nu-l pot pune pe fiecare link din pagina; cum pot opri IE sa se duca totusi in pagina in care a fost trimis prin apasarea linkului (IE face totusi submit pe formular - in cazul in care s-a modificat - dar si redirecteaza pagina spre link, desi in address bar adresa ramane cea care trebuie!)
Cum naiba fac sa opresc IE sa se duca spre linkul apasat daca se face submit la formular?! (Am incercat cu self.location.href=self.location.href insa NU merge)
Multumesc!
PS In celelalte browsere merge, adica daca sunt de acord sa salvez modificarile, acestea sunt salvate si se intoarce in aceeasi pagina. |
|
| Sus |
|
johnny
Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti
|
| Trimis: Mar Iun 28, 2005 2:26 pm Titlul subiectului: |
|
|
alert(self.location.href)
vezi ce valoare are... |
|
| Sus |
|
MasterPhoton
Data înscrierii: 06/Mar/2003
Mesaje: 437
|
| Trimis: Mar Iun 28, 2005 7:55 pm Titlul subiectului: ...valoarea corecta |
|
|
| alert-ul are valoarea corecta. doar ca imediat dupa ce se afiseaza alert-ul pagina se duce la cea de la linkul apasat! |
|
| Sus |
|
johnny
Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti
|
| Trimis: Mar Iun 28, 2005 8:57 pm Titlul subiectului: |
|
|
cred ca e vorba de prioritatea actiunilor, care se executa mai intai.
ie-ul are un comprament mai special...
un workaround cred ca ar fi regandirea logicii. daca pui ceva online (daca nu e confidential), poate gasim o solutie. |
|
| Sus |
|
MasterPhoton
Data înscrierii: 06/Mar/2003
Mesaje: 437
|
| Trimis: Mar Iun 28, 2005 9:45 pm Titlul subiectului: :) |
|
|
index.php are:
<body onUnload='check_form('Salvezi modificarile? OK-da, Cancel-nu');'>
functia check_form este o functie care vede daca fiecare element dintr-un formular are valoarea actuala diferita fata de cea implicita. De exemplu:
Cod:
function check_form(message)
{
var flag = false;
if (document.getElementById)
{
//Netscape 6 specific code
pre = 'document.getElementById("';
post = '").';
}
if (document.all)
{
//IE4+ specific code
pre = 'document.all.';
post = '.';
}
if (eval (pre + 'frm' + post + 'Submit.value') != 'Submited') // ca sa nu faca verificarea si pentru butonul 'save'
{
if (eval (pre + 'frm' + post + 'Name.value') != eval (pre + 'frm' + post + 'Name.defaultValue'))
{
flag = true;
}
if (eval (pre + 'frm' + post + 'Description.value') != eval (pre + 'frm' + post + 'Description.defaultValue'))
{
flag = true;
}
}
else
{
return false;
}
if (flag)
{
if (confirm(message))
{
document.frm.submit();
}
else
{
return false;
}
}
}
E atat de simplu incat e enervant ca NU MERGEEEE :( |
|
| Sus |
|
johnny
Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti
|
| Trimis: Mie Iun 29, 2005 2:18 pm Titlul subiectului: |
|
|
ok, conform testelor a rezultat ca:
linkul are prioritate in fata onUnload. In IE se oberva ca incepe sa incarce pagina externa si apoi ruleaza scriptul js. Gmail are implementat ceva similar, cand incepi sa completezi un mesaj si dai click pe alt link. implementarea lor pentru IE contine:
<a onclick="return top.js.OpenExtLink(window,event,this)" href="url">
deci, verificarea se face onclick (care are prioritate inaintea href). Exemplu:
<a onclick="document.location.href='http://www.php.net'; return false;" href="http://google.ro">Google</a>
la apasarea linkului te va duce pe php.net si nu pe google (testat IE si Firefox)
poti sa implementezi ceva similar.
O alta solutie, care pare sa fie mai aplicabila:
onbeforeunload()
onbeforeunload
Si un exemplu de usage:
http://php.scripturi.ro/exemplu_js.php |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|