@oldzas

Как убрать из тела страницы системные скрипты ядра битрикса?

Добрый день.

Заметил, что в теле страницы выводится скрипт "/bitrix/js/main/core/core.js" - помогите, как его убрать?
Есть ощущение что это ядро и оно выводится через <?$APPLICATION->ShowHead();?>

Есть ли простые способы?
  • Вопрос задан
  • 4134 просмотра
Пригласить эксперта
Ответы на вопрос 3
@PetrPo
Собственно так и есть, вызов <?$APPLICATION->ShowHead();?> равносилен
<?
$APPLICATION->ShowMeta('keywords');
$APPLICATION->ShowMeta('description');
$APPLICATION->ShowHeadStrings();
$APPLICATION->ShowHeadScripts();
$APPLICATION->ShowCSS();
?>

$APPLICATION->ShowHeadStrings(); - где-то там подключается этот самый core.js. Но если у тебя нет вызова \CJSCore::Init(), то собственно и ядро не будет подключаться, а значит у тебя подключаются какие-то битриксовые js библиотеки и видимо они нужны))
Если не подключать core.js - горя хапнешь, как минимум битриксовый ajax работать не будет (параметр компонентов AJAX_MODE), а т.к. этот ajax зашит в ядре и доступен абсолютно во всех компонентах, то это может большую беду принести
Ответ написан
Комментировать
@alexprowars
Если прям вообще не любишь битрииксовые скрипты, то их можно вырезать раз и навсегда регуляркой

$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('main', 'OnEndBufferContent',  'deleteKernelScripts');

	function deleteKernelScripts(&$content)
	{
		global $USER;

		if (defined("ADMIN_SECTION")) {
			return;
		}

		if (is_object($USER) && $USER->IsAuthorized()) {
			$arPatternsToRemove = [
				'/<script[^>]+?>var _ba = _ba[^<]+<\/script>/',
			];
		} else {
			$arPatternsToRemove = [
				'/<script.+?src=".+?js\/main\/core\/.+?(\.min|)\.js\?\d+"><\/script\>/',
				'/<script.+?src="\/bitrix\/js\/.+?(\.min|)\.js\?\d+"><\/script\>/',
				'/<link.+?href="\/bitrix\/js\/.+?(\.min|)\.css\?\d+".+?>/',
				'/<link.+?href="\/bitrix\/components\/.+?(\.min|)\.css\?\d+".+?>/',
				'/<script.+?src="\/bitrix\/.+?kernel_main.+?(\.min|)\.js\?\d+"><\/script\>/',
				'/<link.+?href=".+?kernel_main\/kernel_main(\.min|)\.css\?\d+"[^>]+>/',
				'/<link.+?href=".+?main\/popup(\.min|)\.css\?\d+"[^>]+>/',
				'/<script.+?>BX\.(setCSSList|setJSList)\(\[.+?\]\).*?<\/script>/',
				'/<script.+?>if\(\!window\.BX\)window\.BX.+?<\/script>/',
				'/<script[^>]+?>\(window\.BX\|\|top\.BX\)\.message[^<]+<\/script>/',
				'/<script[^>]+?>var _ba = _ba[^<]+<\/script>/',
				'/<script[^>]+?>.+?bx-core.*?<\/script>/'
			];
		}

		$content = preg_replace($arPatternsToRemove, "", $content);
		$content = preg_replace("/\n{2,}/", "\n", $content);
	}
Ответ написан
Комментировать
randomizex
@randomizex
http://resume.web-ivan.ru
Нашел причуну вот тут https://dev.1c-bitrix.ru/support/forum/forum6/topi... в нашем случае эти файлы подключались так как у нас в настройках Главного модуля стояла галочка"Продлевать сессию при активности посетителя в окне браузера".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы