2013-01-22 108 views
1

有沒有辦法通過模板工具包來檢測您使用的瀏覽器?例如,我可以使用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 %] 
    > 

回答

4

我不知道這個TT插件,但是爲您的後端應用程序添加一行或兩行以使信息可用於模板是微不足道的。例如,如果你的應用程序是基於催化劑,可以添加這樣的事情你的主程序:

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

...在你的「自動」的處理程序,引入線,如(未經測試):

$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瞭解更多信息和選項。我相信有類似的插件/方法舞者,Mojolicious等

4

您可以通過HTTP請求標頭來做到這一點。你沒有提到什麼叫TT,但是如果你使用的是Catalyst,你可以使用Catalyst::TraitFor::Request::BrowserDetect,然後將一個變量傳遞給TT來表示哪種瀏覽器正在請求該頁面。