【问题标题】:Template Toolkit browser detection模板工具包浏览器检测
【发布时间】:2023-04-04 08:34:01
【问题描述】:

有没有办法通过模板工具包检测你正在使用的浏览器?例如,我可以使用 jQuery 实现我想要做的事情,但如果可能的话,我认为知道如何在模板工具包中做到这一点会很有用?

jQuery

    <script>
    jQuery(window).load(function(){
        if ( (jQuery.browser.msie && jQuery.browser.version < 9.0) )
        {
            jQuery('body').addClass('old-ie');
        }
    });
    </script>

在模板工具包中,我想做类似下面的事情,但在任何地方的文档中都看不到这个?

    <body 
    [% IF browser.msie && browser.version < 9.0 %]
    class="old-ie"
    [% ELSE %]
    [% END %]
    >

【问题讨论】:

    标签: perl template-toolkit


    【解决方案1】:

    您可以通过 HTTP 请求标头执行此操作。您没有提及调用 TT 的内容,但如果您使用的是 Catalyst,则可以使用 Catalyst::TraitFor::Request::BrowserDetect,然后将变量传递给 TT 以说明正在请求页面的浏览器类型。

    【讨论】:

      【解决方案2】:

      我不知道有一个 TT 插件可以解决这个问题,但是在后端应用程序中添加一两行以使模板可以使用信息是很简单的。例如,如果您的应用是基于 Catalyst 的,您可以在主程序中添加如下内容:

      __PACKAGE__->apply_request_class_roles(qw/
          Catalyst::TraitFor::Request::BrowserDetect
      /);
      

      ...并在您的“自动”处理程序中,引入一行,例如 (untested):

      $c->stash(browser => $c->req->browser);
      

      ...或者只是使用这是您的模板:

      [%- SET browser = c.req.browser;
          SET old_ie = 'class="old-ie"'
              IF browser.windows && browser.ie && browser.public_major < 9.0;
      -%]
      

      然后将old_ie 包含在模板中所需的任何位置。

      有关更多信息和选项,请参阅 Catalyst::TraitFor::Request::BrowserDetectHTTP::BrowserDetect。我敢肯定 Dancer、Mojolicious 等也有类似的插件/方法。

      【讨论】:

        猜你喜欢
        • 2011-01-14
        • 2013-09-12
        • 1970-01-01
        • 2011-04-19
        • 2011-09-24
        • 2011-07-25
        • 2012-12-30
        • 2013-03-03
        相关资源
        最近更新 更多