Für Google ist es in Ordnung, Canonical-Links per JavaScript zu setzen. Das nachträgliche Ändern solcher Links per JavaScript kann aber problematisch sein.
Google erkennt Meta-Daten und andere Informationen, die per JavaScript auf einer Webseite gesetzt werden. Das funktioniert zum Beispiel beim Seitentitel und bei Meta Robots-Tags. Auch Canonical-Links, die per JavaScript erzeugt werden, kann Google berücksichtigen, nachdem eine Seite von Google gerendert wurde.
Problematisch kann das aber dann werden, wenn im initialen HTML-Code ein bestimmter Canonical-Link enthalten ist, der dann nachträglich per JavaScript geändert wird. Das erklärte Johannes Müller im Webmaster-Hangout vom 10. Januar.
Durch das Ändern des Canonical-Links sendet man Google unterschiedliche Signale. Google weiß dann nicht, welches der Signale gültig ist. In der Folge kann es sein, dass Google den Canonical-Link ignoriert und die falsche URL indexiert.
Das Setzen von Canonical-Links per JavaScript ist also völlig in Ordnung, so lange sich im ursprünglichen HTML-Code noch kein Canonical-Link befindet.
Titelbild: Copyright Paul Pirosca - Fotolia.com