代码之家  ›  专栏  ›  技术社区  ›  sdvnksv

根据客户端的语言将类添加到正文

  •  1
  • sdvnksv  · 技术社区  · 8 年前

    我想根据客户端的浏览器语言更改网页的正文类:

    var lang = navigator.language || navigator.userLanguage;
    if (lang == "en") {
        $("body").addClass("en");
    }
    

    这将根据用户浏览器语言显示某些容器。

    添加此代码的最佳位置是什么?我应该加进去吗 $(document).ready() $(window).load() ? 或者在打开尸体容器之后?任何帮助都将不胜感激。

    3 回复  |  直到 8 年前
        1
  •  1
  •   Oz Lodriguez    8 年前

    因为您是通过添加类来操作dom的。如果您正在使用jquery的文档,那么就绪就可以了。对于香草JS。最好将其放在DOMContentLoaded事件上。

        2
  •  0
  •   KevBot    8 年前

    似乎您希望尽快执行此操作。如果您基于语言显示/隐藏容器,我怀疑您的用户会看到与他们无关的语言闪光,这将是一种很棒的用户体验。

    不管你想怎么做都可以,但我会把这个JavaScript放在执行速度最快的地方( head 也许是标签?)。

    一旦HTML应用到DOM,CSS就会立即应用,因此您的用户不会看到无关的内容。但如果你在等待,他们可能会 onload

        3
  •  0
  •   Borja Tur    8 年前

    IMO这取决于将处理语言选择的事件,将类添加到正文的事件应该总是在翻译文本的事件之前。

    $(window).bind('setup', function() {
        var lang = navigator.language || navigator.userLanguage;
        if (lang == "en") {
            $("body").addClass("en");
        }
    });
    

    文档中的准备就绪

    $(document).ready(function() {
        $(window).trigger('setup');
        //functionality to manage translations
    });
    

    Here 一个有效的例子