2016-10-05 8 views
3

Ich versuche, eine Magnific Popup automatisch beim Laden der Seite erscheinen.Magnific Popup beim Laden der Seite

Ich habe es so, es funktioniert, wenn ich auf eine Schaltfläche klicke (was einige mögliche Fehler eingrenzt), aber ich kann es immer noch nicht zum Laden erscheinen. Ich habe versucht this und this, aber keiner scheint zu arbeiten.

<script> 
    $('.open-popup-link').magnificPopup({ 
     type:'inline', 
     midClick: true // Allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source in href. 
    }); 
    $.magnificPopup.open({ 
     type: 'inline' 
    }); 
</script> 

Kann mir jemand helfen, dies zu klären? Im Idealfall würde es automatisch geöffnet und wenn die Schaltfläche geklickt wurde.

ZUSÄTZLICHE INFORMATIONEN

Hier ist der html/erb für die Schaltfläche, die funktioniert:

<p><a href="#test-popup" class="open-popup-link btn btn-ghost hvr-grow" style="margin-top: 40px">Quick Man Check</a></p> 

Und hier ist der Inhalt:

<div id="test-popup" class="white-popup mfp-hide"> 
    <div class=""> 
     <h1>Answer the following question to gain entry:</h1> 
     <% @random_partial = 'man_tests/test' + rand(0).round.to_s %> 
     <%= render partial: @random_partial %> 
    </div> <!-- hover-well --> 
</div> <!-- white-popup mfp-hide --> 

Klarstellung: Das Popup hat eine Übergabeschaltfläche für Formulardaten, die Probleme verursacht damit erscheint es einmal aber nur einmal.

Update: Wie vorgeschlagen, beide diese:

$.magnificPopup.open({ 
    items: { 
     src: '#test-popup', 
     type: 'inline' 
    } 
}); 

Und:

$('.open-popup-link').magnificPopup('open'); 

Machen Sie es sich auf Last offen, aber es geht dann tut so bis zum Überdruss, nie erlaubt Indexseite, die angezeigt werden soll.

+0

es wahrscheinlich der ** Typ **, – user2182349

+0

@ user2182349 die Dokumentation zu überprüfen, kann es nicht sein der Typ, weil er funktioniert, wenn auf den Link geklickt wird. Nur die zweite Iteration funktioniert nicht. – Liz

+0

Sie benötigen den zweiten Parameter, der angibt, welcher Popup geöffnet werden soll. Fügen Sie ein Komma und eine Null rechts vor der schließenden Klammer beim zweiten Aufruf hinzu. – user2182349

Antwort

0
$.magnificPopup.open({ 
    items: { 
     src: '#test-popup', 
     type: 'inline' 
    } 
}); 

Wenn Sie Link geben können, um das Problem zu überprüfen, wird es gut genug sein.

diesen Code Versuchen unter

<script> 
function getPathFromUrl(url) { 
    return url.split(/[?#]/)[0]; 
} 

if(getPathFromUrl(document.referrer) != getPathFromUrl(document.URL){ 
$.magnificPopup.open({ 
     items: { 
      src: '#test-popup', 
      type: 'inline' 
     } 
    }); 
} 
</script> 

Below-Lösung auf Basis Popup für Zeit

ist,
var now, time, lastTimePopup, repeatAfter; 
    now = new Date(); 
    time = now.getTime(); 
    repeatAfter = 2 * 60 * 1000;//First number 2 is after number of minutes the popup should be showed. 

    if (localStorage.getItem('lastTimePopup') !== null) { 
     lastTimePopup = localStorage.getItem('lastTimePopup'); 
    } 

    if (((now - lastTimePopup) >= repeatAfter) || !lastTimePopup) { 
     $.magnificPopup.open({ 
      items: { src: '#test-popup' }, 
      type: 'inline' 
     }, 0); 

     localStorage.setItem('lastTimePopup', now.getTime()); 
    } 
+0

Das funktioniert so, dass es sofort nach dem Laden der Seite aufgerufen wird, aber jedes Mal, wenn ich auf "submit" klicke, wird die Homepage neu geladen, wodurch ein neues Popup erscheint. – Liz

+0

Oh, Sie wollen nicht, dass das Popup erneut erscheint. – aasiph

+0

Das Popup sollte jedes Mal auftreten, wenn der Benutzer zur Indexseite navigiert. Wenn sie auf den Indexlink klicken, wird es jedes Mal angezeigt. Sobald sie jedoch im Popup-Fenster auf die Schaltfläche "Senden" klicken, müssen sie in der Lage sein, die Indexseite popup-frei zu sehen. – Liz

0

Im documentation fand ich dies:

// Open directly via API 
$.magnificPopup.open({ 
    items: { 
    src: '<div class="white-popup">Dynamically created popup</div>', // can be a HTML string, jQuery object, or CSS selector 
    type: 'inline' 
    } 
}); 

Sie sollten diese wickeln in einem $ (document) .ready (function() {...});

Ich habe eine Arbeits Plunker Probe für Sie erstellt: https://plnkr.co/edit/h1fmGbJg5cYONfwMQerF

Eine andere Lösung könnte ein verstecktes Element hinzuzufügen (zB eine Schaltfläche) und klicken Sie via Javascript: ('thebutton') $ [0]. klicken();

+0

Danke für den Plunker. Ich habe den von der API ausprobiert, aber ohne Erfolg. Ich habe bereits eine funktionierende Schaltfläche, die das Popup aufruft (erfolgreich), so wie die Idee, auf den Button mit Javascript zu klicken, hätte aber nicht das gleiche Problem, wo es immer wieder auftaucht (weil der Submit-Button im Popup lädt die Seite neu, was ein weiteres Popup erzeugt)? – Liz

+0

@ Liz: Ein HTML-Element "Button" reicht nicht unbedingt die Seite ein. Verwenden Sie einfach einen Button von type = "button" - das Formular wird nicht gesendet und Sie können Ihr JS daran binden. – Gerfried

Verwandte Themen