Não tenho certeza se sobrescrever o canonical usando JavaScript funcionará, pois isso é algo que ocorre mais no nível do spider (ou seja, a parte que recupera e coleta dados) do que no nível do indexador (a parte do bot que interpreta os dados e os armazena no índice de busca).
Conselho não solicitado: você pode querer ler este tópico para que possa colocar essas sobrescritas em um plugin: