Jak ukryć wyskakujące okienko “ na pewno chcesz opuścić tę stronę ” ze strony wpisu

Gdzie mogę pominąć wyskakujące okienko „Czy na pewno chcesz opuścić tę stronę” podczas opuszczania strony darowizny (np. dotacji) bez faktycznego kontynuowania wpłaty. Zdaję sobie sprawę, że może to mieć na celu zapobieganie przypadkowemu opuszczeniu strony w połowie wypełniania formularza, ale w rzeczywistości wydaje mi się, że jest to bardziej irytujące niż pomocne w ułamku przypadkowych przypadków. Ponadto mam na stronie login Facebooka, który , gdy jest używany, wymusza ponowne załadowanie strony i wywołuje wyskakujące okienko „opuść tę stronę”. Jest to dezorientujące dla użytkownika, który nie wiedziałby, że musi nacisnąć przycisk „opuść tę stronę”, aby się zalogować (nie wspomnieć, że „faktycznie pozostaną na stronie, stąd zamieszanie).

To jest w Joomla (3.4.4 z CiviCRM 4.6.9)

Zakładam, że „jest funkcją onbeforeunload – pojawia się ona w /administrator/components/com_civicrm/civicrm/js/Common.js

Ostrzeżenie pojawia się nawet wtedy, gdy użytkownik nie dokonał jakichkolwiek wpisów w formularzu. Czy ostrzeżenie nie powinno pojawiać się tylko wtedy, gdy tak się dzieje?

Dziękujemy za wszelkie uwagi.

Komentarze

  • OK, więc skomentuj ' przed pobraniem ' funkcja w pliku, o którym wspomniałem powyżej, zdecydowanie usuwa wyskakujące okienko, ale tak naprawdę powinienem był zadać pytanie, jak wywołać funkcję tylko wtedy, gdy coś zostanie wpisane / zaznaczone w formularzu na stronie. Ponieważ w takim przypadku ' jest przydatne.
  • Ja ' d ostatnio zaobserwowałem to zachowanie raz lub dwa razy w 4.6 stron, myślę, zajmie chwilę, aby się temu przyjrzeć, jeśli znów je zobaczę. To trochę kłopotliwe, ale od tego czasu zdarzyłoby się to podczas przesyłania lub ponownego ładowania, po prostu naciskając ESC lub cokolwiek innego, co powoduje, że zniknie jak najszybciej: D

Odpowiedz

CiviCRM używa jQuery do obserwowania danych wejściowych do formularzy i ostrzegania tylko wtedy, gdy są niezapisane zmiany. Odpowiedni kod znajdziesz w Common.js . Kiedy wypróbuję przykładową stronę na serwerze demonstracyjnym, wygląda na to, że działa poprawnie; jeśli otwórz stronę darowizn , nic nie wpisuj i zamknij kartę, nie otrzymuję żadnego ostrzeżenia. Ale jeśli wprowadzę kwotę, a następnie spróbuję ją zostawić, pojawia się komunikat o treści przed pobraniem .

Jeśli masz ochotę na to, debuguj funkcję CRM.utils.initialValueChanged, aby dowiedzieć się, dlaczego civi uważa, że forma została zmieniona, gdy nie byłaby to pomocna opinia dla nas przy ulepszaniu oprogramowania.

Lub możesz po prostu dodać mały skrypt javascript do przycisku logowania na FB. Jeśli istniejące znaczniki wyglądają następująco: <button type="submit">, możesz to dodać, aby wyglądało na <button type="submit" onclick="window.onbeforeunload = null;">

Ale poważnie, opinie o debugowaniu byłyby pomocne.

Komentarze

  • Dziękuję, Coleman, za informacje. ' Nie jestem zbyt wielkim programistą, ale będę wyglądać dlaczego Civi uważa, że coś zostało zmienione w formularzu i opublikuj tutaj dla innych (i dla zespołu Civi).
  • Zgaduję – czy jest możliwe, że automatyczne wypełnianie przeglądarki wstawia coś do formularza?

Odpowiedź

Dzieje się tak, gdy wbudowany profil do rejestracji użytkownika („Nazwa i adres” jest of-the-box title) jest używany na stronie wkładu. Zamień go na inny profil, a wyskakujące okienko się nie pojawi. Powielono to na stronie demonstracyjnej Joomla CiviCRM.

Komentarze

  • Dobrze byłoby zawęzić to do konkretnego pola w profilu, które to powoduje .
  • Dziękuję za podpowiedź, Coleman. To ' nie jest żadnym z pól – użyłem tych samych w nowym profilu, który ' nie jest wbudowany jeden do rejestracji użytkownika i działa doskonale.
  • że ' s … dziwne.
  • I ' Otrzymuję ten błąd przy użyciu innego profilu

Odpowiedź

Na wypadek, gdyby tak się stało przydatne dla innych: Chciałem, aby pole wyboru dotyczące powtarzających się darowizn („Chcę przekazywać tę kwotę co miesiąc”) domyślnie było prawdziwe (zaznaczone) w określonym formularzu darowizny. Aby to zrobić, użyłem następującego niestandardowego javascript.

Po ustawieniu wartości na „zaznaczone” w javascript, kod .data("crm-initial-value", true) był niezbędny, aby CiviCRM nie narzekał na niezapisane zmiany podczas przechodzenia do innej strony.

<script> CRM.$(function($) { // make recurring contribution checkbox true by default var r = $("#is_recur"); if (!r.length) { return; } r.attr("checked", "checked"); r.prop("defaultChecked", true); r.prop("checked", true); // necessary to tell Civi the default value has changed r.data("crm-initial-value", true); </script> 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *