Onbeforeunload działający po kliknięciu na przycisk

0

Witam serdecznie.

Chciałbym, aby "onbeforeunload" (czyli alert przed wyjściem ze strony z JavaScriptu) działał wyłącznie po naciśnięciu danego przycisku.

Próbowałem rozwiązać to w ten sposób:

<label>
<input type="checkbox" name="reg" value="" onclick="document.getElementById('identyfikator').style.display = this.checked ? 'block' : 'none'; this.form.elements['mail'].enabled = this.form.elements['mail'].disabled = !this.checked"  />Akceptuję <a href="regulamin">regulamin</a> i zasady korzystania z serwisu.
</label>
                                        
<div id="identyfikator" style="display: none">
<script>
window.onbeforeunload = function (evt) {
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
if(!confirm('Czy chcesz opuścić tę stronę')) return false
}
 
}
</script> 	
<input type="text" id="formularz_im" class="form_fonts" name="mail" disabled="disabled" />
</div>                   

nie mniej jednak strona ostrzega przed jej odświeżeniem, wyjściem, itp. nawet nie klikając na przycisk z funkcją "onclick".

Czy ktoś ma jakiś pomysł, aby alerty o opuszczeniu strony były wyświetlane dopiero po naciśnięciu na określony przycisk?

Z góry dziękuję i pozdrawiam,
badyllek1993

1

nie bardzo widzę w tym kodzie jakiś przycisk, domyślam się że chodzi o checkbox. Możesz zrobić po prostu coś takiego:

 onclick="window.onbeforeunload = function (evt) {if(!confirm('Czy chcesz opuścić tę stronę')) return false;}"
0

Dzięki wielkie,
super pomysł - działa.

Mam jeszcze problem z tym, żeby wyświetlanie alertu było jednoznaczne z wyświetleniem obrazka (display: none -> display:block).

Kod prezentuje się następująco:

<button type="submit" onclick="window.onbeforeunload = function (evt) {if(!confirm('Czy chcesz opuścić tę stronę? Do zamknięcia tego okna służy przycisk \'Zamknij\' w prawym górnym rogu.')) return false; document.getElementById('obrazek').style.display = this.checked ? 'block' : 'none';}"  />

<div id="obrazek" style="position:absolute; left:100px; top:50px; z-index: 2; display:none;" >  
<img src="doctor.png" >
</div>

Mogę w dalszym ciągu liczyć na waszą pomoc? :)

Pozdrawiam,
badyllek1993

0
<button type="submit" onclick="window.onbeforeunload = function (evt) {if(!confirm('Czy chcesz opuścić tę stronę? Do zamknięcia tego okna służy przycisk \'Zamknij\' w prawym górnym rogu.')) return false; }; document.getElementById('obrazek').style.display =  'block' ;"  />
0

Kurde, nie bardzo to działa...

0

A co tak właściwie chcesz osiągnąć? Po kliknięciu przycisku ma pojawić się obrazek?

0

Loganek,
gdy wyświetli się okno alertu z onbeforeunloadem, chciałbym aby wyświetlał się obrazek ze strzałką do tego buttona 'Zamknij', o którym mowa w treści alertu.
Czy takie coś jest w ogóle możliwe?

Dziękuję za dotychczasową pomoc.

0

Ok, niejasno się przedtem wyraziłeś:)

<button type="submit" onclick="window.onbeforeunload = function (evt) { document.getElementById('obrazek').style.display =  'block' ;if(!confirm('Czy chcesz opuścić tę stronę? Do zamknięcia tego okna służy przycisk \'Zamknij\' w prawym górnym rogu.')) return false; };"  />
0

O kurde, ale ja Cię lubię :)

Jeszcze takie pytanie. Czy da się jakoś wygasić obrazek (display:none;), gdy alert znika, np. gdy nie chce się wyjść ze strony obrazek zostaje.

0

Da się:

<button type="submit" onclick="window.onbeforeunload = function (evt) { document.getElementById('obrazek').style.display =  'block' ;if(!confirm('Czy chcesz opuścić tę stronę? Do zamknięcia tego okna służy przycisk \'Zamknij\' w prawym górnym rogu.')){document.getElementById('obrazek').style.display =  'none' ;  return false; }};"  />
0

Dziękuję pięknie, właśnie tyle chciałem osiągnąć :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.