- Модуль: 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;
}