Skip to content

Instantly share code, notes, and snippets.

@glebstrunnikov
Created October 11, 2024 12:12
Show Gist options
  • Save glebstrunnikov/321208ef4c76f7a1c59f5feaf52c7cf8 to your computer and use it in GitHub Desktop.
Save glebstrunnikov/321208ef4c76f7a1c59f5feaf52c7cf8 to your computer and use it in GitHub Desktop.
// HEAD_SCRIPT, вынутый из самоисполняющейся функции. В оригинале параметр, определяющий язык страницы, указывается в виде языкового кода ru/en/zh, я его заменил на аргумент lang, чтобы два раза не вставать.
const headScript = function (w, lang) {
var q = [
["setContext", "TL-INT-glebstrunnikov-com_2024-10-01", lang],
[
"embed",
"booking-form",
{
container: "tl-booking-form",
},
],
[
"embed",
"search-form",
{
container: "tl-search-form",
},
],
];
var h = [
"ru-ibe.tlintegration.ru",
"ibe.tlintegration.ru",
"ibe.tlintegration.com",
];
var t = (w.travelline = w.travelline || {}),
ti = (t.integration = t.integration || {});
ti.__cq = ti.__cq ? ti.__cq.concat(q) : q;
if (!ti.__loader) {
ti.__loader = true;
var d = w.document,
c =
d.getElementsByTagName("head")[0] || d.getElementsByTagName("body")[0];
function e(s, f) {
return function () {
w.TL || (c.removeChild(s), f());
};
}
(function l(h) {
if (0 === h.length) return;
var s = d.createElement("script");
s.type = "text/javascript";
s.async = !0;
s.src = "https://" + h[0] + "/integration/loader.js";
s.onerror = s.onload = e(s, function () {
l(h.slice(1, h.length));
});
c.appendChild(s);
})(h);
}
};
// Определяем куку
function getCookieValue() {
const cookie = document.cookie
.split(";")
.map((cookie) => cookie.trim())
.find((cookie) => cookie.startsWith("googtrans="));
return cookie ? cookie.split("=")[1] : null;
}
// Функция для запуска скрипта с аргументом в зависимости от куки
function renderForms() {
const searchFormDiv = document.querySelector("#tl-search-form");
if (searchFormDiv) {
searchFormDiv.innerHTML = "";
}
const bookingForm = document.querySelector("#tl-booking-form");
if (bookingForm) {
bookingForm.innerHTML = "";
}
if (!getCookieValue()) {
headScript(window, "ru");
}
if (getCookieValue() === "/ru/en") {
headScript(window, "en");
}
if (getCookieValue() === "/ru/zh-CN") {
headScript(window, "zh");
console.log("privet");
}
}
// Запускаем первый раз при загрузке страницы
renderForms();
// Вешаем евент лисенер, заново запускающий скрипт, на кнопки переключения языка в тот момент, когда они создаются
function setFlagListeners() {
const flags = document.querySelectorAll(".glink.nturl.notranslate");
if (flags) {
flags.forEach((flag) => {
flag.addEventListener("click", () => {
renderForms();
});
});
}
}
const langEl = document.querySelector(".nav-menu-language");
const langObserver = new MutationObserver(setFlagListeners);
langObserver.observe(langEl, { childList: true, subtree: true });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment