Использование вспомогательного JS-файла для встраивания Typeform в Vue и Laravel

#javascript #laravel #vue.js #vuejs2 #vue-component

#javascript #laravel #vue.js #vuejs2 #vue-компонент

Вопрос:

У меня возникла проблема с интеграцией typeform на мой веб-сайт с использованием vue и laravel.

Typeform внедряется в скрипт, и Vue это не нравится, когда я пытаюсь поместить скрипт непосредственно внутрь компонента, он выдает эту ошибку:

  • Шаблоны должны отвечать только за отображение состояния в пользовательский интерфейс. Избегайте размещения тегов с побочными эффектами в ваших шаблонах, таких как, поскольку они не будут проанализированы.

В настоящее время я пытаюсь внедрить его в компонент vue, используя метод Mounted(). Вот мой код:

  mounted() {
    var ts = document.createElement('script')
    ts.setAttribute('src','http://applyingawareness.com/public/js/typeformScripts/tf-merch.js');
    var tfDiv = document.getElementById('typeform');

    tfDiv.insertAdjacentElement('afterend',ts);

}
  

Я разместил скрипт по указанному URL в setAttribute методе в моем общедоступном каталоге / js. Проблема в том, что при запросе он отображается как 301, а затем как 404. Кроме того, когда я просматриваю вкладку «источники», tf-merch.js файл не отображается.

Как мне загрузить скрипт typeform (или любой другой внешний скрипт, если уж на то пошло) в dom, чтобы я мог использовать его в качестве typeforms в своих компонентах?

Ответ №1:

Вместо того, чтобы пытаться вставить скрипт в любой div, обрабатываемый Vue, вы могли бы добавить скрипт к телу. Вероятно, вы могли бы также сделать это в created() перехватчике

 let script = document.createElement('script')
script.src = 'http://applyingawareness.com/public/js/typeformScripts/tf-merch.js'
document.body.appendChild(script)