Em resumo seria isto:
<script>
(function () {
var isOpened = false;
//Troque aqui pelo site desejado
var siteUrl = "http://www.google.com.br";
document.addEventListener("click", function(){
if (!isOpened) {
isOpened = !!window.open(siteUrl, "_blank");
}
});
})();
</script>
Adiciona o evento click ao document.
, use window.open
sem parametros de configuração de janela, criei uma variavel isOpened
pra verificar se o pop-up já foi aberto, acaso tenha sido clicado então ignora os próximos cliques (também dá pra usar document.removeEventListener
)
Nota [1]: Eu adicionei o
!!
na frente dowindow.open
porque alguns plugins de bloqueio de popup bloqueiam até chamadas vindas de cliques, entãowindow.open
retornanull
, assim você saberá se o popup foi aberto ou não.Nota [2]: Usei uma função anonima pra isolar as variaveis do escopo global, assim evitando acidentes.
Limitar pop-up por tempo [extra]
O AP me solicitou uma funcionalidade extra, estou separado do contexto acima pois o código acima acredito que ajudará pessoas em especificas situações, neste caso o AP deseja limitar a cada 24 horas um click, ou seja abriu o pop-up uma vez só daqui 24 horas irá ocorrer novamente, mesmo que atualize a página.
Isto pode ser resolvido usando cookies, por exemplo:
<script>
//Função pra verificar se a janela foi já aberta hoje
function checkOpenPopupToday()
{
return /(^|;\s)isopenedpopup=1(;|$)/.test(document.cookie);
}
//Função pra definir em horas que a janela foi aberta
function setOpenPopupToday(hours)
{
var date = new Date();
date.setTime(date.getTime() + (hours * 60 * 60 * 1000));
document.cookie = "isopenedpopup=1; expires=" + date.toGMTString() + "; path=/";
}
(function () {
//Troque aqui pelo site desejado
var siteUrl = "http://www.google.com.br";
//Troque aqui pelo tempo em horas desejado para impedir que o popup abra neste intervalo
var hours = 24;
document.addEventListener("click", function()
{
//Verificar pelo cookie
if (!checkOpenPopupToday())
{
//Verificar se o popup abriu com o clique
if (!!window.open(siteUrl, "_blank"))
{
//Se a janela foi aberta define o tempo para bloquear novas aberturas
setOpenPopupToday(hours);
}
}
});
})();
</script>
0 Comentários