2016-10-05 2 views
3

Я пытаюсь сделать Magnific Popup автоматически появляется при загрузке страницы.Magnific Popup на загрузке страницы

У меня есть он, поэтому он работает, когда я нажимаю кнопку (которая сужает некоторые возможные ошибки), но я все еще не могу заставить ее отображаться при загрузке. Я пробовал this и this, но ни один из них не работает.

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

Может ли кто-нибудь помочь мне исправить это? В идеале он автоматически открывается и когда нажимается кнопка.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Вот HTML/ERB для кнопки, которая работает:

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

А вот содержание:

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

Разъяснение: Всплывающее имеет кнопка отправки данных формы, что вызывает проблемы с ним появляется один раз, но только один раз.

Update: Как было предложено, как это:

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

И это:

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

сделать его открытым на нагрузке, но затем продолжает делать это объявление до тошноты, никогда не позволяя страницу индекса для просмотра.

+0

Это, вероятно, ** тип **, проверьте документацию – user2182349

+0

@ user2182349, она не может быть тип, потому что он работает, когда нажимается ссылка. Только вторая итерация не работает. – Liz

+0

Вам нужен второй параметр - который указывает, какой всплывающий файл открывается. Добавьте запятую и нуль перед закрывающей скобкой во втором вызове. – user2182349

ответ

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

Если вы хотите дать ссылку для проверки проблемы, это будет достаточно хорошо.

Попробуйте этот код ниже

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

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

Ниже приведен решение для всплывающих окон на основе времени

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

Это работает в том смысле, что оно выводит его сразу при загрузке страницы, но каждый раз, когда я нажимаю кнопку «Отправить», он перезагружает домашнюю страницу, тем самым воспитывая новое всплывающее окно. – Liz

+0

О, так что вы не хотите, чтобы всплывающее окно появилось снова. – aasiph

+0

Всплывающее окно должно появляться каждый раз, когда пользователь переходит на индексную страницу. Если бы они нажали на ссылку индекса, она появлялась каждый раз. Однако, как только они нажимают кнопку отправки во всплывающем окне, они должны иметь возможность видеть всплывающее окно индекса. – Liz

0

В documentation я нашел это:

// 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' 
    } 
}); 

Вы должны обернуть это в $ (документ) .ready (функция() {...});

Я создал рабочий образец Plunker для вас: https://plnkr.co/edit/h1fmGbJg5cYONfwMQerF

Другим решением может быть добавить скрытый элемент (например, кнопки) и нажмите на него с помощью Javascript: («thebutton») $ [0]. нажмите();

+0

Благодарим вас за Plunker. Я попробовал один из API, но безрезультатно. У меня уже есть одна рабочая кнопка, которая вызывает всплывающее окно (успешно), так что идея нажатия кнопки с javascript, но не будет той же проблемы, когда она появляется снова и снова (потому что кнопка отправки во всплывающем окне делает перезагрузку страницы, что создаст другое всплывающее окно)? – Liz

+0

@Liz: элемент html «кнопка» необязательно представляет страницу. Просто используйте кнопку типа = "button" - это не будет отправлять форму, и вы можете привязать свой JS к ней. – Gerfried