Внедрить многострочный JS в тритий

У меня есть фрагмент javascript, который мне нужно вставить на каждую страницу, чтобы активировать аналитику Google. Я пытался использовать инъекцию и продолжаю получать ошибки:

inject("// load ga.js if it doesn't exist
    if (!window._gat) {
        var ga = document.createElement("script"); ga.type = "text/javascript"; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? "https://ssl" : "http://www") + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ga, s);
    };")

Как лучше всего подойти к этой проблеме с тритием?

1 ответ

Решение

inject() Кажется, функция преобразует строку в HTML, а затем помещает ее в текущий узел. Поскольку ваша строка - JS, а не правильный HTML, генерируются всевозможные ошибки.

Вместо этого вы можете использовать тритий insert_javascript() Функция, описанная в документации по адресу: http://tritium.io/current#XMLNode.insert_javascript(Text%20%25js).

insert_javascript() также заключает строку в теги CDATA, так что вам не нужно беспокоиться о кодировке символов HTML и тому подобном.

Вот пример того, как это может работать в вашем случае: http://tester.tritium.io/7532c4e18619051c5736a0ad990e4a33b1b3f00f

Другие вопросы по тегам