每个浏览器会话一次运行JQuery

时间:2018-11-12 14:45:08

标签: javascript jquery

我有一个仅通过首页上的页面加载触发的功能(预加载屏幕)。

问题在于它每次用户返回首页时都运行。

我一直在使用sessionStorage来使该功能在每个浏览器会话中运行一次,但是我对JQuery还是很陌生,无法弄清楚它的去向/其实际含义。

非常感谢您的帮助。谢谢!

这是我的代码...

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'

2 个答案:

答案 0 :(得分:2)

要在每个会话中运行一次,请使用以下命令存储用户在当前会话中已经执行过此操作:

$(function() {
  var visited = sessionStorage['visited'] || false;
  if (visited) {
    $('#loader-wrapper').addClass('hidden');
  } else {
    sessionStorage['visited'] = true;
  }
});

默认情况下(在HTML中)将hidden类添加到div并仅在其第一次访问时将其删除可能更有效/更简单:

$(function() {
  var visited = sessionStorage['visited'] || false;
  if (!visited) {
    $('#loader-wrapper').removeClass('hidden');
    sessionStorage['visited'] = true;
  }
});

答案 1 :(得分:0)

您应该写:

$(document).ready(function() {
    $('#loader-wrapper').addClass('hidden');
});

但是您对每个浏览器会话仅运行一次的问题对我来说没有意义。您希望函数在页面加载时执行。 $(document).ready(...)仅在加载DOM时运行一次函数。当用户与页面互动时,它将不会稍后运行(除非它当然会触发点击来重新加载页面)。