Jak potlačím vyskakovací okno “ opravdu chcete opustit tuto stránku ” na stránce s příspěvky

Kde mohu potlačit vyskakovací okno „Opravdu chcete opustit tuto stránku“, když opouštíte stránku příspěvku (např. darování), aniž byste ve příspěvku skutečně pokračovali. Uvědomuji si, že to může být, aby se zabránilo náhodnému opuštění stránky v polovině vyplňování formuláře, ale ve skutečnosti si myslím, že je to otravnější než užitečné ve zlomku náhodných případů. Na stránce mám také přihlašovací údaje k Facebooku, které , je-li použit, vynutí stránku, aby se znovu načetla, a tak vyvolá vyskakovací okno „opustit tuto stránku“. To je matoucí pro uživatele, který by nevěděl, že musí kliknout na tlačítko „opustit tuto stránku“, aby se mohl přihlásit (ne zmínit, že „skutečně zůstanou na stránce, proto je zmatek).

Toto je na Joomle (3.4.4 s CiviCRM 4.6.9)

Předpokládám, že „s onbeforeunload funkce – jedna se objeví v /administrator/components/com_civicrm/civicrm/js/Common.js

Varování se zobrazí, i když uživatel nemá provedl ve formuláři jakékoli položky. Nemělo by se varování zobrazit, pouze když se objeví?

Děkujeme za všechny ukazatele.

Komentáře

  • OK, takže komentujte ' onbeforeunload Funkce ' v souboru, který jsem zmínil výše, rozhodně odstraní vyskakovací okno, ale způsob, jakým jsem se měl opravdu zeptat, je otázka, jak bychom mohli funkci vyvolat, pouze když je něco zadáno / vybráno ve formuláři na stránce. Protože v takovém případě je ' s užitečné.
  • I ' d jsem toto chování v poslední době jednou nebo dvakrát pozoroval Myslím, že bude chvíli trvat, než se na to podívám, pokud to znovu uvidím. Je to trochu otravné, ale protože by se to stalo při odesílání nebo opětovném načtení, právě jsem narazil na ESC nebo cokoli, co by to mohlo zmizet ASAP: D

Odpověď

div class = „answer“>

CiviCRM používá ke sledování vstupů formuláře jQuery a poskytuje varování pouze v případě, že dojde k neuloženým změnám. Kód pro něj najdete v Common.js . Když vyzkouším ukázkovou stránku příspěvku na demo serveru, vypadá to, že funguje správně; pokud otevřete stránku příspěvku , nic nezadávejte a zavírejte kartu, nedostane se žádné varování. Pokud ale zadám částku a pokusím se ji nechat, objeví se zpráva onbeforeunload .

Pokud jste na to, můžete ladit funkci CRM.utils.initialValueChanged a zjistit, proč si civi myslí, že se forma změnila, když pro nás by to nebyla užitečná zpětná vazba pro vylepšování softwaru.

Nebo můžete do svého přihlašovacího tlačítka FB přidat malý javascript. Pokud stávající označení vypadá jako <button type="submit"> pak byste jej mohli přidat, aby to vypadalo jako <button type="submit" onclick="window.onbeforeunload = null;">

Ale vážně, zpětná vazba k ladění by byla užitečná.

Komentáře

  • Děkuji vám, Colemane, za informace. Nejsem ' moc vývojář, ale budu vypadat proč si Civi myslí, že se ve formuláři něco změnilo, a přidejte sem další (a pro tým Civi).
  • Jen hádám – je možné, aby automatické vyplňování prohlížeče něco vložilo do formuláře?

Odpověď

Stává se to, když je integrovaný profil pro registraci uživatele („Jméno a adresa“ je na stránce příspěvku). Zaměňte jej za jiný profil a vyskakovací okno se nezobrazí. Replikováno na ukázkovém webu Joomla CiviCRM.

Komentáře

  • Bylo by dobré to zúžit na konkrétní pole v profilu, který to způsobuje .
  • Děkuji za výzvu k objasnění, Colemane. Není to ' žádné z polí – použil jsem všechna stejná v novém profilu, který ' není integrovaný jeden pro registraci uživatelů a funguje to perfektně.
  • že ' s … divný.
  • I ' Dostávám tuto chybu pomocí jiného profilu

Odpovědět

V případě, že se jedná o použití ostatním: Chtěl jsem ve výchozím nastavení u konkrétního dárcovského formuláře nastavit zaškrtávací políčko Opakující se darování („Chci přispívat touto částkou každý měsíc“). Ve výchozím nastavení jsem použil následující vlastní javascript.

Po nastavení hodnoty na „zkontrolováno“ v JavaScriptu byl .data("crm-initial-value", true) kód nezbytný, aby CiviCRM nemohl stěžovat na neuložené změny při přechodu na jinou stránku.

<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> 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *