Добавить скрипт, если условие выполнено - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь добавить скрипт на страницу, только если URL-адрес страницы не содержит слова «cms».Это потому, что скрипт ломает серверную часть страницы, но отлично работает на внешнем интерфейсе.

Это то, что я имею до сих пор;

<script>
     if(window.location.href.indexOf("cms") == -1) {
          $('head').append('<script type="text/javascript" src="https://downloads.mailchimp.com/js/signup-forms/popup/embed.js" data-dojo-config="usePlainJson: true, isDebug: false"></script><script type="text/javascript">require(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us17.list-manage.com","uuid":"INSERT_STRING","lid":"INSERT_STRING"}) })</script>');
}
</script>

Но это не работает;ошибка, которую я получаю в своем редакторе кода, является литералом незамкнутой строки.Я думаю, что проблема в том, что я думаю, что я закрываю тег скрипта и затем добавляю ему больше JS.Я пытался поменять местами цитаты, но безрезультатно.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 01 июня 2018

Возможно динамическое добавление сценария с некоторым содержимым без его загрузки ajax:

var x = document.createElement("script");
x.textContent = "window.test = function(){console.log('xx')}";
document.head.appendChild(x)

Запуск

test()

В консоли после этого будет вызван метод.

Но в вашем случае, однако, это немного сложнее, потому что вы добавляете 2 сценария одновременно.Проблема с динамически загружаемыми сценариями заключается в том, что вы должны проявлять особую осторожность, чтобы загружать их по порядку.

Tbh, я немного не уверен в вашей проблеме, если сценарий ломает бэкэнд или работает на внешнем интерфейсе.Чем именно страницы с cms отличаются от остальных?

Кстати, динамическое добавление сценариев в интерфейс довольно сложно сделать правильно.Если вы делаете это, чтобы решить проблему - возможно, есть более простые / лучшие решения

...