• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/composite/engine.php
  • Класс: BitrixMainCompositeEngine
  • Вызов: Engine::getInjectedJs
static function getInjectedJs($params = array())
{
	$vars = CUtil::PhpToJSObject($params);

	$inlineJS = << 0)
			{
				var lm = Date.parse(d.lastModified);
				if (!isNaN(lm))
				{
					var td = new Date().getTime();
					if ((lm + v.AUTO_UPDATE_TTL * 1000) >= td)
					{
						w.frameRequestStart = false;
						w.preventAutoUpdate = true;
						return;
					}
					inv = true;
				}
			}
			else
			{
				w.frameRequestStart = false;
				w.preventAutoUpdate = true;
				return;
			}
		}

		var r = w.XMLHttpRequest ? new XMLHttpRequest() : (w.ActiveXObject ? new w.ActiveXObject("Microsoft.XMLHTTP") : null);
		if (!r) { return; }

		w.frameRequestStart = true;

		var m = v.CACHE_MODE; var l = w.location; var x = new Date().getTime();
		var q = "?bxrand=" + x + (l.search.length > 0 ? "&" + l.search.substring(1) : "");
		var u = l.protocol + "//" + l.host + l.pathname + q;

		r.open("GET", u, true);
		r.setRequestHeader("BX-ACTION-TYPE", "get_dynamic");
		r.setRequestHeader("X-Bitrix-Composite", "get_dynamic");
		r.setRequestHeader("BX-CACHE-MODE", m);
		r.setRequestHeader("BX-CACHE-BLOCKS", v.dynamicBlocks ? JSON.stringify(v.dynamicBlocks) : "");
		if (inv)
		{
			r.setRequestHeader("BX-INVALIDATE-CACHE", "Y");
		}
		
		try { r.setRequestHeader("BX-REF", d.referrer || "");} catch(e) {}

		if (m === "APPCACHE")
		{
			r.setRequestHeader("BX-APPCACHE-PARAMS", JSON.stringify(v.PARAMS));
			r.setRequestHeader("BX-APPCACHE-URL", v.PAGE_URL ? v.PAGE_URL : "");
		}

		r.onreadystatechange = function() {
			if (r.readyState != 4) { return; }
			var a = r.getResponseHeader("BX-RAND");
			var b = w.BX && w.BX.frameCache ? w.BX.frameCache : false;
			if (a != x || !((r.status >= 200 && r.status < 300) || r.status === 304 || r.status === 1223 || r.status === 0))
			{
				var f = {error:true, reason:a!=x?"bad_rand":"bad_status", url:u, xhr:r, status:r.status};
				if (w.BX && w.BX.ready && b)
				{
					BX.ready(function() {
						setTimeout(function(){
							BX.onCustomEvent("onFrameDataRequestFail", [f]);
						}, 0);
					});
				}

				w.frameRequestFail = f;

				return;
			}

			if (b)
			{
				b.onFrameDataReceived(r.responseText);
				if (!w.frameUpdateInvoked)
				{
					b.update(false);
				}
				w.frameUpdateInvoked = true;
			}
			else
			{
				w.frameDataString = r.responseText;
			}
		};

		r.send();

		var p = w.performance;
		if (p && p.addEventListener && p.getEntries && p.setResourceTimingBufferSize)
		{
			var e = 'resourcetimingbufferfull';
			var h = function() {
				if (w.BX && w.BX.frameCache && w.BX.frameCache.frameDataInserted)
				{
					p.removeEventListener(e, h);
				}
				else 
				{
					p.setResourceTimingBufferSize(p.getEntries().length + 50);
				}
			};
			p.addEventListener(e, h);
		}

		})(window, document);
JS;

	$html = "";
	if (self::isBannerEnabled())
	{
		$html .= 'n";
	}

	$html .= '";

	return $html;
}