【问题标题】:How to make my website remember which CTA has been pressed to redirect如何让我的网站记住哪个 CTA 被按下重定向
【发布时间】:2020-06-14 00:10:21
【问题描述】:

我正在尝试制作一个同时使用西班牙语和英语的页面,所以我想做的是创建一个主页,用户必须在其中选择语言,一旦他选择了,我希望页面记住哪种语言被选中,所以它不会再次打开主页,而是打开之前选择的语言。

最好的方法是什么?

编辑——我尝试了 localStorage 的建议,但我被卡住了,从未使用过 JavaScript,所以我应该看到这一点。我可以用“locale”“es”或“en”写,但我根本无法重定向。 这是代码:

<script>
    (function (){
  'use strict';

  var eng = document.querySelector('.eng')

  function setLocalStorage(){
     eng.addEventListener('click', () => {
      localStorage.setItem('locale','en')
    })
  }
  setLocalStorage()

}());
        (function (){
  'use strict';

  var esp = document.querySelector('.esp')

  function setLocalStorage(){
     esp.addEventListener('click', () => {
      localStorage.setItem('locale','es')
    })
  }
  setLocalStorage()

}());
        if (localStorage.getItem('en') === 'en') { window.location='eng.html'; }
        if (localStorage.getItem('es') === 'es') { window.location='esp.html'; }
    </script>

【问题讨论】:

    标签: javascript html css button


    【解决方案1】:

    您可以使用本地存储。见:mdn localStorage

    localStorage.setItem('locale', 'en'); // or es
    

    重新加载页面后可以取回值:

    localStorage.getItem('locale'); // --> en
    

    (注意:一开始你的 getItem 会返回 undefined。)

    你可以把你的代码改成这样:

    (function () {
      'use strict';
    
      const locale = localStorage.getItem('locale');
    
      if (locale === 'en') {
        window.location = 'eng.html';
    
      } else if (locale === 'es') {
        window.location = 'esp.html';
    
      } else {
        // first visit:
    
        document
          .querySelector('.eng')
          .addEventListener('click', () => {
            localStorage.setItem('locale', 'en')
          });
    
        document
          .querySelector('.esp')
          .addEventListener('click', () => {
            localStorage.setItem('locale', 'es')
          });    
      }
    
    }());
    

    【讨论】:

    • 嗨,马克!我有点卡在这里。我编辑了帖子。介意看一下吗?非常感谢您的帮助!
    • 如果你这样做,你的页面将重新加载和重新加载:(我认为是一个圆圈)window.location='eng.html';您应该为我们创建一个 codepen.io。
    • 我真的花了 4 个小时想你会通过 cmets 回复而不是编辑你的帖子大声笑(她是新手),非常感谢!你真是个天才!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 2014-08-08
    • 2013-08-17
    • 2016-01-26
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多