Změna <title> při AJAXovém požadavku

Pokud bychom chtěli při AJAXovém požadavku změnit titulek stránky (obsah značky <title> v hlavičce), máme na výběr dvě možnosti. Jednak můžeme využít javascriptové History API, konkrétně metodu window.history.pushState() (která nám umožňuje přepisovat historii prohlížení v browseru). Anebo se spokojíme s využitím snippetů.

Od verze Nette 2.0 lze používat atributovou variantu makra {snippet}, čehož využijeme. A jak bude tedy AJAXová změna <title> pomocí snippetů vypadat v praxi?

<title n:snippet="title">{#title|striptags|upper}Default Title{/#}</title>

Invalidace bude stejná jako u jakéhokoliv jiného snippetu:

$this->invalidateControl('title');

V šabloně view pak můžeme pro ukázku implementovat dynamicky se měnící <title>:

<h1 n:block="title">
    {if $presenter->isAjax()}
        Loaded With Ajax
    {else}
        No Ajax Heading
    {/if}
</h1>

Uvedený kód počítá s přilinkovaným obslužným skriptem pro AJAX z doplňků.