Загрузка и исполнение внешнего скрипта javascript на своем сайте
Прилетела давече задача: подключить платежную систему на сайте. «Дело простое» подумал я сначала. Обычно платежные системы сами предоставляют виджет, который остается только вставить на сайт. Но! дьявол как всегда оказался в деталях — а именно сайт сделан на «тильде» — значит никакого PHP. Только javascript+html. Плюс крайне желательно обойтись без «переходов» со страницу на страницу. А именно: пользователь ввел договор, сумму, ФИО, прошла проверка и только после на этой-же странице показалась форма платежной системы.
В принципе всё реализуемо и не сложно. Но! после вставки:
браузер стал выдавать ошибку:
Вызов document.write() из асинхронно-загруженного внешнего сценария был проигнорирован.
, и выполнять скрипт откзывался. Как оказалось, создатели виджета вставили в тело скрипта команды вида document.write, что категорически запрещается без перезагрузки страницы. Если бы этот скрипт я просто статически разместил на странице, то всё бы было хорошо. Но нам это не нужно..
Долго думал… Долго Гуглил…
Решение: перед загрузкой скрипта подменить функцию вызова document.write своей «безобидной». В итоге скрипт получился такой: