2017-06-06 21 views
1

好吧,我發現我的博客驗證碼:我如何限制每個用戶一個彈出窗口,使用JavaScript

<script type="text/javascript"> 
document.body.onclick= function(){ window.open('My site', 'poppage', 'toolbars=0, scrollbars=1, location=0, statusbars=0, menubars=0, resizable=1, width=950, height=650, left = 300, top = 50'); } 
</script> 

但是因爲我一竅不通JS,我真的不能多編輯。

+0

在Chrome我只能打開一個彈出窗口。你的目標是什麼瀏覽器?或遇到問題? –

回答

0
document.body.onclick= function(){ window.open('My site', 'poppage', 'toolbars=0, scrollbars=1, location=0, statusbars=0, menubars=0, resizable=1, width=950, height=650, left = 300, top = 50');document.body.onclick=function(){} } 

重置onclick屬性一旦被點擊一次

+1

智能**但**,頁面刷新/歷史記錄/導航,你會再次回到惱人的彈出窗口。 –

+0

好點。您可以創建一個cookie來存儲彈出窗口是否已經發生,並且只在cookie不存在時才顯示彈出窗口。 –

2

檢查的彈出式窗口前localStorage項目,當你顯示它,設置localStorage項目。由於這不會在SO沙箱工作,這裏有一個codepen https://codepen.io/mcoker/pen/PjqQqw

document.body.onclick = function() { 
 
    if (!localStorage.popup) { 
 
    localStorage.popup = 1; 
 
    window.open(
 
     "My site", 
 
     "poppage", 
 
     "toolbars=0, scrollbars=1, location=0, statusbars=0, menubars=0, resizable=1, width=950, height=650, left = 300, top = 50" 
 
    ); 
 
    } 
 
};
body { 
 
    min-height: 100vh; 
 
}

+0

OP也問jquery。如果你想限制每頁一次的點擊次數,我會推薦使用.one函數。重新加載將再次可用。 http://api.jquery.com/one/ – daremachine

+1

PS:更具可讀性和可記性的是使用:'!localStorage.popup'和'localStorage.popup = 1;' –

+0

@ RokoC.Buljan我假設OP意味着他們只希望彈出窗口爲看到彈出窗口的人顯示一次。對於「用戶」,他們只是指訪問該網站的人。沒有額外的細節,這就是我假設他們的意思。例如,我懷疑他們有一個用戶數據庫,或者他們在顯示彈出窗口前檢查了他們的標記,並在顯示彈出窗口(與我的答案中的邏輯類似)時設置它。 –

0

使用Cookie https://jsfiddle.net/arvinddhakad/bq8f241a/

document.body.onclick = function() { 
    isPopup = document.cookie.replace(/(?:(?:^|.*;\s*)popup\s*\=\s*([^;]*).*$)|^.*$/, "$1") || false; 
    if (!isPopup) { 
     window.open('My site', 'poppage', 'toolbars=0, scrollbars=1, location=0, statusbars=0, menubars=0, resizable=1, width=950, height=650, left = 300, top = 50'); 
    document.cookie = "popup=true"; 
    } 
} 
相關問題