2016-10-05 109 views
3

我試圖使Magnific Popup在頁面加載時自動出現。頁面加載時的Magnific Popup

我有它,所以它的作品,當我點擊一個按鈕(這縮小了一些可能的錯誤),但我仍然無法讓它出現在加載。我試過thisthis,但都沒有工作。

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

澄清: 彈出有表單數據的提交按鈕,這會導致問題它只出現過一次,但只有一次。

更新: 作爲建議,無論是這樣的:

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

而且這樣的:

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

讓它負載開,但隨後繼續這麼做廣告nauseum,絕不容忍索引頁面被查看。

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

你應該在$(文件)把這個包。就緒(函數(){...});

我創建了一個工作Plunker樣品給你:https://plnkr.co/edit/h1fmGbJg5cYONfwMQerF

另一種解決方案可能是添加一個隱藏的元素(如按鈕),通過JavaScript點擊:(「 thebutton」)$ [0]。點擊();

+0

謝謝你的Plunker。我嘗試了API中的一個,但無濟於事。我已經有一個工作按鈕,可以調出彈出窗口(成功),就像使用javascript單擊按鈕的想法一樣,但不會出現同樣的問題,因爲它一次又一次出現(因爲彈出窗口中的提交按鈕使頁面重新加載,這將創建另一個彈出窗口)? – Liz

+0

@Liz:html元素「按鈕」不一定提交頁面。只需使用類型=「按鈕」的按鈕 - 這不會提交表單,你可以綁定你的JS。 – Gerfried