LoginSignup
7
8

More than 5 years have passed since last update.

jquery-cookieを使い、初回ログイン時と、1ヶ月以上ログインしなかったユーザーにだけチュートリアルビデオをモーダルで表示する

Last updated at Posted at 2016-11-17

jquery-cookieを使い、初回ログイン時と、1ヶ月以上ログインしなかったユーザーにだけチュートリアルビデオをモーダルで表示するプログラムを書いた。
jquery-cookieプロジェクトは2016年11月現在js-cookieに移行しているので、こちらを利用したバージョンも追記できれば…。

dashbord.html
<section id="section">
  <p><a id="modal-open" class="button-link">チュートリアル・ビデオをもう一度見る</a></p>
  <div id="modal-content">
    <video src="video/login/tutorial.mp4" autoplay controls></video>
    <a id="modal-close" class="button-link"><span class="is-hidden">閉じる</span></a>
  </div>
</section>

<script
  src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
  integrity="sha256-/SIrNqv8h6QGKDuNoLGA4iret+kyesCkHGzVUUV0shc="
  crossorigin="anonymous"></script>
<script
  src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
  integrity="sha256-/SIrNqv8h6QGKDuNoLGA4iret+kyesCkHGzVUUV0shc="
  crossorigin="anonymous"></script>
<script src="/js/jquery.cookie.js"></script>
<script src="/js/function.js"></script>
function.js
$(function() {
      var $X_modal = 0;
      var $Y_modal = 0;
      var $modal_content = $("#modal-content");
      var $modal_overlay = $("#modal-overlay");
      if ($('#dashboard').length) {
        if ($.cookie('tutorialVideo') !== 'on') {
          $(window).on('load', function() {
            overlayCheck();
          });
        }
      }
      $("#modal-open").on('click', function() {
        overlayCheck();
      });

      function overlayCheck() {
        $(this).blur();
        if ($modal_overlay[0]) {
          return false;
        }

        var dElm = document.documentElement,
          dBody = document.body;
        $X_modal = dElm.scrollLeft || dBody.scrollLeft;
        $Y_modal = dElm.scrollTop || dBody.scrollTop;
        $("#main").append('<div id="modal-overlay"></div>');
        $("#modal-overlay").fadeIn();

        centeringModal();

        $modal_content.fadeIn();

        $("#modal-overlay,#modal-close").on('click', function() {

          window.scrollTo($X_modal, $Y_modal);

          $("#modal-content,#modal-overlay").fadeOut(function() {
            $.cookie('tutorialVideo', 'on', { //cookieにtutorialVideoという名前でonという値をセット
              expires: 30, //cookieの有効日数
              path: '/' //有効にするパス
            });
            $modal_overlay.remove();
          });
        });
      }

      $(window).resize(centeringModal);

      function centeringModal() {

        var w = $(window).width();
        var h = $(window).height();

        var cw = $modal_content.outerWidth();
        var ch = $modal_content.outerHeight();

        $modal_content.css({
          "left": (w - cw) / 2 + "px",
          "top": (h - ch) / 2 + "px"
        });
      }
});

所感

Qiitaの仕様変更で「ストック」が「いいね」と「ストック」にわかれたけど前の方が好きだった…。「いいねもせずにストックはマナー違反」とかありそうで怖い。

参考

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8