Установить счетчик посещений с помощью куки - PullRequest
0 голосов
/ 01 марта 2019

Мой сайт использует анти-блокировку рекламы, которая запрещает людям входить в него, но никто не любит видеть рекламу, поэтому я решил найти способ, позволяющий новым посетителям использовать сайт несколько раз, прежде чем отключить сообщение.Появляется adblock.

Я пытался использовать куки для записи номера, и каждый раз, когда человек посещает, вычитает номер, удаляет старый куки, создает новый с вычтенным номером, поэтому, когда число равно0 анти-блокировка появляется, но меня смущает, я только начал изучать javascript.

Есть ли более простой способ сделать это, или cookie - лучший вариант?Как мне это сделать?

Пример страницы моего анти-Adblock: https://www.stackexample.ml/adblock

Мой код анти-блокировки:

ПРИМЕЧАНИЕ: Мой сайт статичен.

window.onload = function a() {
  var div1 = document.getElementById("off");
  var div2 = document.getElementById("on");
  var div3 = document.getElementById("carregando");
  var span = document.getElementById("v");
  var b = document.getElementById("b");
  var url = new URL(window.location);
  var r = url.searchParams.get("r");
  var enc1 = window.atob(r);

if( window.canRunAds === undefined ){
  div2.style.display="block"
  div3.style.display="none"
  b.style.display="block"
  span.style.color="#d06079"
  span.innerHTML="Desative o Adblock"
}else{
  div1.style.display="block"
  div3.style.display="none"
  span.innerHTML="Adblock desativado"
  //código para liberar a pagina aqui
}  
};
.cont {
  width:320px;
  margin:18% auto;
}
#b {
  border:1px solid #ba5269;
  background-color:#d06079;
  color:white;
  border-radius:6px;
  padding:15px;
  font-size:18px;
  display:none;
  margin:25px auto;
}
#on{
  display:none;
  margin:22px auto;
}
.check_mark {
  width: 80px;
  height: 130px;
  margin: 0 auto;
  display:none;
}
#v {
  font-family:arial;
  font-size:35px;
  color:green;
  display:block;
  text-align:center;
}

button {
  cursor: pointer;
  margin-left: 15px;
}

.hide{
  display:none;
}

.sa-icon {
  width: 80px;
  height: 80px;
  border: 4px solid gray;
  -webkit-border-radius: 40px;
  border-radius: 40px;
  border-radius: 50%;
  margin: 20px auto;
  padding: 0;
  position: relative;
  box-sizing: content-box;
}

.sa-icon.sa-success {
  border-color: #4CAF50;
}

.sa-icon.sa-success::before, .sa-icon.sa-success::after {
  content: '';
  -webkit-border-radius: 40px;
  border-radius: 40px;
  border-radius: 50%;
  position: absolute;
  width: 60px;
  height: 120px;
  background: white;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.sa-icon.sa-success::before {
  -webkit-border-radius: 120px 0 0 120px;
  border-radius: 120px 0 0 120px;
  top: -7px;
  left: -33px;
  -webkit-transform: rotate(-45deg);
  transform: rotate(-45deg);
  -webkit-transform-origin: 60px 60px;
  transform-origin: 60px 60px;
}

.sa-icon.sa-success::after {
  -webkit-border-radius: 0 120px 120px 0;
  border-radius: 0 120px 120px 0;
  top: -11px;
  left: 30px;
  -webkit-transform: rotate(-45deg);
  transform: rotate(-45deg);
  -webkit-transform-origin: 0px 60px;
  transform-origin: 0px 60px;
}

.sa-icon.sa-success .sa-placeholder {
  width: 80px;
  height: 80px;
  border: 4px solid rgba(76, 175, 80, .5);
  -webkit-border-radius: 40px;
  border-radius: 40px;
  border-radius: 50%;
  box-sizing: content-box;
  position: absolute;
  left: -4px;
  top: -4px;
  z-index: 2;
}

.sa-icon.sa-success .sa-fix {
  width: 5px;
  height: 90px;
  background-color: white;
  position: absolute;
  left: 28px;
  top: 8px;
  z-index: 1;
  -webkit-transform: rotate(-45deg);
  transform: rotate(-45deg);
}

.sa-icon.sa-success.animate::after {
  -webkit-animation: rotatePlaceholder 4.25s ease-in;
  animation: rotatePlaceholder 4.25s ease-in;
}

.sa-icon.sa-success {
  border-color: transparent\9;
}
.sa-icon.sa-success .sa-line.sa-tip {
  -ms-transform: rotate(45deg) \9;
}
.sa-icon.sa-success .sa-line.sa-long {
  -ms-transform: rotate(-45deg) \9;
}

.animateSuccessTip {
  -webkit-animation: animateSuccessTip 0.75s;
  animation: animateSuccessTip 0.75s;
}

.animateSuccessLong {
  -webkit-animation: animateSuccessLong 0.75s;
  animation: animateSuccessLong 0.75s;
}

@-webkit-keyframes animateSuccessLong {
  0% {
    width: 0;
    right: 46px;
    top: 54px;
  }
  65% {
    width: 0;
    right: 46px;
    top: 54px;
  }
  84% {
    width: 55px;
    right: 0px;
    top: 35px;
  }
  100% {
    width: 47px;
    right: 8px;
    top: 38px;
  }
}
@-webkit-keyframes animateSuccessTip {
  0% {
    width: 0;
    left: 1px;
    top: 19px;
  }
  54% {
    width: 0;
    left: 1px;
    top: 19px;
  }
  70% {
    width: 50px;
    left: -8px;
    top: 37px;
  }
  84% {
    width: 17px;
    left: 21px;
    top: 48px;
  }
  100% {
    width: 25px;
    left: 14px;
    top: 45px;
  }
}
@keyframes animateSuccessTip {
  0% {
    width: 0;
    left: 1px;
    top: 19px;
  }
  54% {
    width: 0;
    left: 1px;
    top: 19px;
  }
  70% {
    width: 50px;
    left: -8px;
    top: 37px;
  }
  84% {
    width: 17px;
    left: 21px;
    top: 48px;
  }
  100% {
    width: 25px;
    left: 14px;
    top: 45px;
  }
}

@keyframes animateSuccessLong {
  0% {
    width: 0;
    right: 46px;
    top: 54px;
  }
  65% {
    width: 0;
    right: 46px;
    top: 54px;
  }
  84% {
    width: 55px;
    right: 0px;
    top: 35px;
  }
  100% {
    width: 47px;
    right: 8px;
    top: 38px;
  }
}

.sa-icon.sa-success .sa-line {
  height: 5px;
  background-color: #4CAF50;
  display: block;
  border-radius: 2px;
  position: absolute;
  z-index: 2;
}

.sa-icon.sa-success .sa-line.sa-tip {
  width: 25px;
  left: 14px;
  top: 46px;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.sa-icon.sa-success .sa-line.sa-long {
  width: 47px;
  right: 8px;
  top: 38px;
  -webkit-transform: rotate(-45deg);
  transform: rotate(-45deg);
}

@-webkit-keyframes rotatePlaceholder {
  0% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg);
  }
  5% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg);
  }
  12% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg);
  }
  100% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg);
  }
}
@keyframes rotatePlaceholder {
  0% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg);
  }
  5% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg);
  }
  12% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg);
  }
  100% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg);
  }
}

.loading {
    border: 4px solid #3a3;
    border-right: 4px solid #a5d7a7;
    border-bottom: 4px solid #a5d7a7;
    height: 80px;
    width: 80px;
    border-radius: 50%;
    -webkit-animation: loading 1s infinite linear;
    -moz-animation: loading 1s infinite linear;
    -o-animation: loading 1s infinite linear;
    animation: loading 1s infinite linear;
    margin:22px auto;
}
@-webkit-keyframes loading {
    from {
        -webkit-transform: rotate(0deg);
    }
    to {
        -webkit-transform: rotate(360deg);
    }
}
@-moz-keyframes loading {
    from {
        -moz-transform: rotate(0deg);
    }
    to {
        -moz-transform: rotate(360deg);
    }
}
@-o-keyframes loading {
    from {
        -o-transform: rotate(0deg);
    }
    to {
        -o-transform: rotate(360deg);
    }
}
@keyframes loading {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}
.abgne-loading-20140104-2 {
    position: relative;
    height: 100px;
    width: 100px;
}
.abgne-loading-20140104-2 .loading {
    border: 6px solid #168;
    border-right: 6px solid #fff;
    border-bottom: 6px solid #fff;
    height: 100%;
    width: 100%;
    border-radius: 50%;
    -webkit-animation: loading 1s infinite linear;
    -moz-animation: loading 1s infinite linear;
    -ms-animation: loading 1s infinite linear;
    -o-animation: loading 1s infinite linear;
    animation: loading 1s infinite linear;
}
.abgne-loading-20140104-2 .word {
    color: #168;
    position: absolute;
    top: 0;
    left: 0;
    display: inline-block;
    text-align: center;
    font-size: 72px;
    line-height: 72px;
    font-family: arial;
    margin: 18px 0 0 20px;
    padding: 0;
}
<!DOCTYPE html>
<html>
<head>
<title>Verificando Adblock</title>
<script src="https://www.stackexample.ml/js/ads.js"></script>
</head>
<body>
<div class="cont">
<span id="v">Verificando adblock</span>
<div id="carregando" class="loading"></div>
<img src="https://www.stackexample.ml/falhou.png" alt="Smiley face" height="90" width="90" id="on">
<div id="off" class="check_mark">
  <div class="sa-icon sa-success animate">
    <span class="sa-line sa-tip animateSuccessTip"></span>
    <span class="sa-line sa-long animateSuccessLong"></span>
    <div class="sa-placeholder"></div>
    <div class="sa-fix"></div>
  </div>
</div>
<button id="b" onclick="window.location.reload()">Já desativei, Continuar...</button>
</div>
</body>
</html>

1 Ответ

0 голосов
/ 05 марта 2019

Если вы хотите сохранить счетчик, вы можете использовать локальное хранилище для того же самого ... например,

Примечание: вы не сможете запустить этот код здесь из-заограничения по StackOverflow, так как я использую localStorage

Вместо этого вы можете увидеть это в действии (продолжайте обновлять страницу 3 раза, и вы увидите) - https://codepen.io/anon/pen/qvaYQK

Здесь я инициализирую счетчик adcounter с 1, если не найден, если найден, я просто увеличиваю его, если реклама заблокирована, если он пересекает 3, я просто показываю модальное значение пользователю.Если пользователь отключает блокировку рекламы, я сбрасываю счетчик обратно на 0.

Я также немного реорганизовал ваш код, есть огромный кусок кода, который все еще можно реорганизовать.

window.onload = function a() {
  var div1 = document.getElementById("off");
  var div2 = document.getElementById("on");
  var div3 = document.getElementById("carregando");
  var span = document.getElementById("v");
  var b = document.getElementById("b");
  var url = new URL(window.location);
  var r = url.searchParams.get("r");
  var enc1 = window.atob(r);
  var getWrapper = document.getElementById('ad-blocker-modal');
  var showModalAfterVisits = 3; //show modal after 3 visits
  var getCounter = localStorage.getItem('adcounter');
  
  if(!getCounter) {
    localStorage.setItem('adcounter', 0); // initialize Local Storage
  }

  function checkForAdBlocker() {
    if (!window.canRunAds) {
      if(getCounter < 3) {
        //keep incrementing the counter unless the counter reaches 3 and return
        localStorage.setItem('adcounter', ++getCounter);
        return;
      }

      getWrapper.classList.remove('hide');
      div2.style.display = "block"
      div3.style.display = "none"
      b.style.display = "block"
      span.style.color = "#d06079"
      span.innerHTML = "Desative o Adblock"
    } else {
      localStorage.setItem('adcounter', 0); //reset if adblock is disabled
      div1.style.display = "block"
      div3.style.display = "none"
      span.innerHTML = "Adblock desativado"
    }
  }

  checkForAdBlocker();
};
.cont {
  width: 320px;
  margin: 18% auto;
}

.hide {
  display: none;
}

#ad-blocker-modal {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #fff;
}

#b {
  border: 1px solid #ba5269;
  background-color: #d06079;
  color: white;
  border-radius: 6px;
  padding: 15px;
  font-size: 18px;
  display: none;
  margin: 25px auto;
}

#on {
  display: none;
  margin: 22px auto;
}

.check_mark {
  width: 80px;
  height: 130px;
  margin: 0 auto;
  display: none;
}

#v {
  font-family: arial;
  font-size: 35px;
  color: green;
  display: block;
  text-align: center;
}

button {
  cursor: pointer;
  margin-left: 15px;
}

.hide {
  display: none;
}

.sa-icon {
  width: 80px;
  height: 80px;
  border: 4px solid gray;
  border-radius: 40px;
  border-radius: 50%;
  margin: 20px auto;
  padding: 0;
  position: relative;
  box-sizing: content-box;
}

.sa-icon.sa-success {
  border-color: #4CAF50;
}

.sa-icon.sa-success::before,
.sa-icon.sa-success::after {
  content: '';
  border-radius: 40px;
  border-radius: 50%;
  position: absolute;
  width: 60px;
  height: 120px;
  background: white;
  transform: rotate(45deg);
}

.sa-icon.sa-success::before {
  border-radius: 120px 0 0 120px;
  top: -7px;
  left: -33px;
  transform: rotate(-45deg);
  transform-origin: 60px 60px;
}

.sa-icon.sa-success::after {
  border-radius: 0 120px 120px 0;
  top: -11px;
  left: 30px;
  transform: rotate(-45deg);
  transform-origin: 0px 60px;
}

.sa-icon.sa-success .sa-placeholder {
  width: 80px;
  height: 80px;
  border: 4px solid rgba(76, 175, 80, .5);
  border-radius: 40px;
  border-radius: 50%;
  box-sizing: content-box;
  position: absolute;
  left: -4px;
  top: -4px;
  z-index: 2;
}

.sa-icon.sa-success .sa-fix {
  width: 5px;
  height: 90px;
  background-color: white;
  position: absolute;
  left: 28px;
  top: 8px;
  z-index: 1;
  transform: rotate(-45deg);
}

.sa-icon.sa-success.animate::after {
  animation: rotatePlaceholder 4.25s ease-in;
}

.animateSuccessTip {
  animation: animateSuccessTip 0.75s;
}

.animateSuccessLong {
  animation: animateSuccessLong 0.75s;
}

@keyframes animateSuccessTip {
  0% {
    width: 0;
    left: 1px;
    top: 19px;
  }
  54% {
    width: 0;
    left: 1px;
    top: 19px;
  }
  70% {
    width: 50px;
    left: -8px;
    top: 37px;
  }
  84% {
    width: 17px;
    left: 21px;
    top: 48px;
  }
  100% {
    width: 25px;
    left: 14px;
    top: 45px;
  }
}

@keyframes animateSuccessLong {
  0% {
    width: 0;
    right: 46px;
    top: 54px;
  }
  65% {
    width: 0;
    right: 46px;
    top: 54px;
  }
  84% {
    width: 55px;
    right: 0px;
    top: 35px;
  }
  100% {
    width: 47px;
    right: 8px;
    top: 38px;
  }
}

.sa-icon.sa-success .sa-line {
  height: 5px;
  background-color: #4CAF50;
  display: block;
  border-radius: 2px;
  position: absolute;
  z-index: 2;
}

.sa-icon.sa-success .sa-line.sa-tip {
  width: 25px;
  left: 14px;
  top: 46px;
  transform: rotate(45deg);
}

.sa-icon.sa-success .sa-line.sa-long {
  width: 47px;
  right: 8px;
  top: 38px;
  transform: rotate(-45deg);
}

@keyframes rotatePlaceholder {
  0% {
    transform: rotate(-45deg);
  }
  5% {
    transform: rotate(-45deg);
  }
  12% {
    transform: rotate(-405deg);
  }
  100% {
    transform: rotate(-405deg);
  }
}

.loading {
  border: 4px solid #3a3;
  border-right-color: a5d7a7;
  border-bottom-color: #a5d7a7;
  height: 80px;
  width: 80px;
  border-radius: 50%;
  animation: loading 1s infinite linear;
  margin: 22px auto;
}

@keyframes loading {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

.abgne-loading-20140104-2 {
  position: relative;
  height: 100px;
  width: 100px;
}

.abgne-loading-20140104-2 .loading {
  border: 6px solid #168;
  border-right-color: #fff;
  border-bottom: #fff;
  height: 100%;
  width: 100%;
  border-radius: 50%;
  animation: loading 1s infinite linear;
}

.abgne-loading-20140104-2 .word {
  color: #168;
  position: absolute;
  top: 0;
  left: 0;
  display: inline-block;
  text-align: center;
  font-size: 72px;
  line-height: 72px;
  font-family: arial;
  margin: 18px 0 0 20px;
  padding: 0;
}
<!DOCTYPE html>
<html>

<head>
  <title>Verificando Adblock</title>
  <script src="https://www.stackexample.ml/js/ads.js"></script>
</head>

<body>
  Some content on my Website
  <div id="ad-blocker-modal" class="hide">
    <div class="cont">
      <span id="v">Verificando adblock</span>
      <div id="carregando" class="loading"></div>
      <img src="https://www.stackexample.ml/falhou.png" alt="Smiley face" height="90" width="90" id="on">
      <div id="off" class="check_mark">
        <div class="sa-icon sa-success animate">
          <span class="sa-line sa-tip animateSuccessTip"></span>
          <span class="sa-line sa-long animateSuccessLong"></span>
          <div class="sa-placeholder"></div>
          <div class="sa-fix"></div>
        </div>
      </div>
      <button id="b" onclick="window.location.reload()">Já desativei, Continuar...</button>
    </div>
  </div>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...