Круизы
<iframe src="https://bitrix.infoflot.com/rest/api/search.filter/?key=YTo0OntzOjI6IklEIjtpOjg0OTtzOjQ6IlVTRVIiO3M6MTY6ImFuUjBiM1Z5UUhsaExuSjEiO3M6NjoiUkFORE9NIjtzOjg6ImR3Y21zbGppIjtzOjE1OiJJTkZPRkxPVC1BUElLRVkiO3M6NDA6ImNmYjY3M2JiZTljNjdiODU5YmM2MTU5MWI0ZjE3MWI4ODAzYjdmNTgiO30=" style="border: none" frameborder="0" scrolling="yes" width="100%" height="200" id="infoflotWidget" onload = "infoflotWidgetLoad(this)" allow="clipboard-read; clipboard-write"></iframe><script id="infoflotWidgetScript">
let infoflotWidget = document.getElementById("infoflotWidget");
const setParentWindowParams = function(frame = infoflotWidget){
//параметры родительского окна
if(frame.contentWindow){
frame.contentWindow.postMessage({
parentParams: {
parentScrollTop: window.scrollY,
parentHeight: window.innerHeight,
top: frame.offsetTop
}
}, '*');
}
}
window.infoflotWidgetLoad = function(frame){
setParentWindowParams(frame);
infoflotWidget = frame;
}
window.addEventListener('scroll',(event) => {
if(infoflotWidget){
setParentWindowParams(infoflotWidget);
}
if(infoflotWidget && infoflotWidget.contentWindow){
if (window.pageYOffset > infoflotWidget.offsetTop + 200) {
infoflotWidget.contentWindow.postMessage({
showBtnTop: true
}, '*');
} else {
infoflotWidget.contentWindow.postMessage({
showBtnTop: false
}, '*');
}
}
});
/**
* Считает ширину скроллбара браузера в пикселях
* @returns {number}
*/
const getScrollbarWidth = function () {
// Creating invisible container
const outer = document.createElement('div');
outer.style.visibility = 'hidden';
outer.style.overflow = 'scroll'; // forcing scrollbar to appear
outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps
document.body.appendChild(outer);
// Creating inner element and placing it in the container
const inner = document.createElement('div');
outer.appendChild(inner);
// Calculating difference between container's full width and the child width
const scrollbarWidth = (outer.offsetWidth - inner.offsetWidth);
// Removing temporary elements from the DOM
outer.parentNode.removeChild(outer);
return scrollbarWidth;
}
window.onmessage = (e) => {
//сообщаем новую высоту ифрейма
if (e.data.hasOwnProperty("frameHeight") && infoflotWidget) {
infoflotWidget.style.height = e.data.frameHeight + 20 + 'px';
}
//сообщаем ширину ифрейма
if (e.data.hasOwnProperty("frameWidth") && infoflotWidget) {
infoflotWidget.style.maxWidth = e.data.frameWidth;
infoflotWidget.style.margin = '0 auto';
infoflotWidget.style.display = 'block';
}
//scroll к верху ифрейма
if (e.data.hasOwnProperty("scrollTop") && infoflotWidget) {
const topInfoflotWidget = infoflotWidget.offsetTop + e.data.scrollTo;
window.scrollTo({
top: topInfoflotWidget,
behavior: e.data.behavior
});
}
//scroll к низу ифрейма
if (e.data.hasOwnProperty("scrollBottom") && infoflotWidget) {
const bottomInfoflotWidget = e.data.hasOwnProperty("frameHeight") ? e.data.frameHeight + infoflotWidget.offsetTop - window.innerHeight : infoflotWidget.offsetTop + infoflotWidget.offsetHeight - window.innerHeight;
window.scrollTo( 0, bottomInfoflotWidget );
}
//сообщаем, что в ифрейме открыли попап
if (e.data.hasOwnProperty("openPopup")) {
document.documentElement.style.overflow = (e.data.openPopup === true) ? "hidden" : "";
/* if(e.data.openPopup === true){
document.body.style.paddingRight = getScrollbarWidth() + 'px';
} else{
document.body.style.paddingRight = '';
} */
}
};
infoflotWidget.src += "&referer=" + encodeURIComponent(location.href);</script>
Автобусные туры
Туры по России
Бронирование отелей
Визы
Авиабилеты