Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   битрикс 24 не запускается скрипт (https://javascript.ru/forum/dom-window/76494-bitriks-24-ne-zapuskaetsya-skript.html)

гуня 16.01.2019 23:38

битрикс 24 не запускается скрипт
 
делаю по этой статье https://helpdesk.bitrix24.ru/open/70...ase_id=3743871
на сайте есть чат битрикса и яндекс метрика
ошибок в консоли нету, но код не срабатывает
похоже код совсем не запускается
<script type="text/javascript"> 
(window.BxLiveChatLoader = window.BxLiveChatLoader || []).push(function() {cosole.log(1);
   BX.LiveChat.addEventListener(window, 'message', function(event){cosole.log(2);
      if(event && event.origin == BX.LiveChat.sourceDomain)
      {cosole.log(3);
         var data = {}; try { data = JSON.parse(event.data); } catch (err){} if(!data.action) return;
         if (data.action == 'sendMessage')
         {
            if (typeof(dataLayer) == 'undefined')
            {
               dataLayer = [];
            }
			dataLayer.push({
				"ecommerce": {
					"purchase": {
						"actionField": {
							"id" : "user_chat1",
							"goal_id" : "33855453"
						},
						"products": [ {} ]
					}
				}
			});
         }
      }
   });
});
</script>

cosole.log нигде не вызывается

Nexus 16.01.2019 23:41

Может код забыли на страничке разместить?)

гуня 17.01.2019 00:07

код размещен в самом низу перед </body>

Aetae 17.01.2019 01:16

console

гуня 17.01.2019 09:43

я же писал что в консоли ошибок нету
это я тут опечатался
получается код валидный?
но почему даже первая строка не срабатывает?
(window.BxLiveChatLoader = window.BxLiveChatLoader || []).push(function() {

Nexus 17.01.2019 09:47

гуня, а скрипт, который будет работать с массивом "BxLiveChatLoader" разместили?
https://helpdesk.bitrix24.ru/open/6986667/

MallSerg 17.01.2019 10:25

У Aetae не получилась подсказка =(.
<style>@keyframes mm {0%{transform: scale(0.9)}100%{color:red;transform:scale(4.9)}}</style><div>
BX.LiveChat.addEventListener(window, 'message', function(event){co<div style="display: inline-block;animation: mm 0.2s ease-in-out 0.10s infinite normal">n</div>sole.log(2);
</div>

гуня 17.01.2019 10:36

сам чат на странице есть
вот код, размещен перед BxLiveChatLoader
<script data-skip-moving="true">
    (function(w,d,u){
        var s=d.createElement('script');s.async=1;s.src=u+'?'+(Date.now()/60000|0);
        var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);
    })(window,document,'https://cdn.bitrix24.ru//crm/site_button/loader_.js');
</script>

console.log(window.BxLiveChatLoader) выдает undefinded
размещен после скрипта чата

Nexus 17.01.2019 10:41

гуня, вам проще ссылку на свой сайт дать.

Malleys 17.01.2019 10:45

У меня тоже упорно не получается этот BxLiveChatLoader. Хотя я сделал как написано https://helpdesk.bitrix24.ru/open/7056949/

UPD Получилось так

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
</head>
<body>

<script data-skip-moving="true">
    (function(w,d,u){
        var s=d.createElement('script');s.async=1;s.src=u+'?'+(Date.now()/60000|0);
        var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);
    })(window,document,'https://cdn.bitrix24.ru/b9442099/crm/site_button/loader_3_nl2tbq.js');
</script>

<script>

	function getBitrixLiveChat() {
		return new Promise(function reaction(resolve) {
			if("BX" in window && "LiveChat" in BX)
				resolve();
			else
				setTimeout(function() { reaction(resolve) }, 100);
		});
	}
		
	getBitrixLiveChat().then(function() {
		BX.LiveChat.addEventListener(window, "message", function(event) {
			if (event.origin !== BX.LiveChat.sourceDomain) return;
			if (event.data.action !== "sendMessage") return;

			alert("Cообщение доставлено!");
			console.log(event);
		});
	});
</script>

</body>
</html>


Который первый скрипт, это из Битрикс, там должен быть скрипт с вашим id, а не с моим тестовым https://cdn.bitrix24.ru/b9442099/crm...er_3_nl2tbq.js

Второй скрипт запускает alert("Cообщение доставлено!"); console.log(event); или можете добавить яндекс метрику... он запускается, когда отправляется сообщение и оно доставлено.

Можете отправить тестовое сообщение сообщение, и у вас сработает alert("Cообщение доставлено!"); console.log(event);

гуня 18.01.2019 15:37

немного костыльное решение
попросил заказчика написать в супорт битрикс и уже сутки ждем ответа
вот такая у них платная поддежка

гуня 29.01.2019 10:48

платный супорт битрикс не захотел помогать
якобы у них все прекрасно работает

гуня 07.02.2019 19:26

похоже ребята из битрикс обновили код
счас работает


Часовой пояс GMT +3, время: 21:26.