Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.04.2021, 12:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от voraa
Я не понял, что там делает конкретный скрипт с этим конкретным iframe.
фрейм самостоятельно регулирует свою высоту, поэтому изменять по клику(???) или по таймеру (можно) бесполезно, атрибут с 'auto' поменяется на 345px (условно)
Ответить с цитированием
  #12 (permalink)  
Старый 01.04.2021, 12:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от voraa
Идея в том, что мы ловим mouseover на блоке под фреймом.
Ответить с цитированием
  #13 (permalink)  
Старый 01.04.2021, 12:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от рони
фрейм самостоятельно регулирует свою высоту
функция setHeight
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
jQuery(window).on('load', function() {
window.setTimeout(function() {
   jQuery('#rsnlresponse iframe').attr({
        'height': 'auto'
    });
}, 2000)
});
    </script>
</head>
<body>
<div class="block">
<script src="https://pms.connectone.ru/module/?hid=eb225c"></script>
</div>
</body>
</html>

Последний раз редактировалось рони, 01.04.2021 в 12:59.
Ответить с цитированием
  #14 (permalink)  
Старый 01.04.2021, 13:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

для любопытных про setHeight
setHeight();
	var documentHeight = 0;
	var curpicker = '';
	$(document).ready(function(){
		window.setTimeout(function(){setHeight();},3000);
		window.scrollTo(0, 0);
		OnResizeElement(document.getElementsByClassName('main-element')[0],300);
		documentHeight = document.getElementsByClassName('main-element')[0].scrollHeight;
		parseDate = function(date) {
			var parts;
			parts = date.split('.');
			return parts[2] + '-' + parts[1] + '-' + parts[0];
		};
		min_booking_date = function(selectedDate) {
			var new_minDate, result;
			new_minDate = new Date(parseDate(selectedDate));
			new_minDate.setDate(new_minDate.getDate() + 1);
			result = new_minDate;
			return $.datepicker.formatDate('dd.mm.yy', result);
		};

	});
	window.onresize = function(event) {
		var newDocumentHeight = document.getElementsByClassName('main-element')[0].scrollHeight;
		var heightDiff = documentHeight - newDocumentHeight;
		if ( heightDiff > 10 | heightDiff < -10 ) {
			setHeight();
		}
	}
		function closestRestricted(restricted_array, date) {
		var i, len, r, result, sorted;
		sorted = restricted_array.map(parseDate).sort();
		result = null;
		for (i = 0, len = sorted.length; i < len; i++) {
			r = sorted[i];
			if (r >= parseDate(date)) {
				r = new Date(r);
				r.setDate(r.getDate());
				result = r;
				break;
			}
		}
		return $.datepicker.formatDate('dd.mm.yy', result);
	}
	function parseDate(date) {
		var parts;
		parts = date.split('.');
		return parts[2] + '-' + parts[1] + '-' + parts[0];
	}
	function goDate(selectedDate,c) {
		var new_minDate, result;
		new_minDate = new Date(parseDate(selectedDate));
		new_minDate.setDate(new_minDate.getDate() + c);
		result = new_minDate;
		return $.datepicker.formatDate('dd.mm.yy', result);
	}

	function setHeight() {
		var documentHeight = document.getElementsByClassName('main-element')[0].scrollHeight
		if (documentHeight > 10) {
			var message = 'documentHeight:'+documentHeight;
			parent.postMessage(message,"*");
		}
			}
	var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
	var eventer = window[eventMethod];
	var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
	eventer(messageEvent,function(e) {
		if (  (typeof e.data === 'string') && (e.data.indexOf('scroll') > -1) ) {
			var height = e.data.split('scroll:')[1],
				height = parseInt(height);
			var bh = 0;
			if ($('#basketBody').length) {
				bh = parseInt($('#basketBody').height());
			}
			dh = document.getElementsByClassName('main-element')[0].scrollHeight+bh+10;
			if (dh < height) {
				height= dh;
			}
			$('.basketItem').animate({top:(height-bh),position:'absolute',left:10,right:10},{duration:100,queue:false,easing:'swing'});
		}
		if (  (typeof e.data === 'string') && (e.data.indexOf('calendarMonths') > -1) ) {
			var months = parseInt(e.data.split(':')[1]);
			var date = e.data.split(':')[2];
			var mindate = e.data.split(':')[3];
			var maxdate = e.data.split(':')[4];
			var restricted = jQuery.parseJSON(e.data.split(':')[5]);
			if(mindate) {
				mindate = min_booking_date(mindate);
			}
			else mindate='+0d';
			$('#datepicker_plain').datepicker({
				minDate: mindate,
				numberOfMonths: months,
				changeMonth: true,
				onSelect: function(date){parent.postMessage('setDate:'+date,"*");}
			});
			$('#datepicker_plain').datepicker("option",	"defaultDate",date);
			$('#datepicker_plain').datepicker("option","minDate",mindate);
			$('#datepicker_plain').datepicker("option","maxDate",maxdate);
			$('#datepicker_plain').datepicker("option","beforeShowDay", function(date) {
				if (restricted && restricted.indexOf($.datepicker.formatDate('dd.mm.yy', date)) !== -1) {
					return [false, 'booked_day', 'Забронировано'];
				} else {
					return [true];
				}
			});
		}
		if (  (typeof e.data === 'string') && (e.data.indexOf('setDate') > -1) && curpicker) {
			$('.'+curpicker+'_datepicker_frame').val(e.data.split('setDate:')[1]);
			if (curpicker=='from') {
				$('.to_datepicker_frame').click();
			}
		}
	},false);

	function OnResizeElement(element, time){
		var id = null;
		var _constructor = function(){
			var HEIGHT = element.scrollHeight;
			id = setInterval(function(){
				if(HEIGHT != element.scrollHeight){
					HEIGHT = element.scrollHeight;
					setHeight();
				};
			}, time);
		};
		var _destructor = function(){
			clearInterval(id);
		};
		this.Destroy = function(){
			_destructor();
		};
		_constructor();
	};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подгрузить js после загрузки страницы? FRIE Общие вопросы Javascript 5 15.12.2012 00:02
Как таймер заставить работать поочерёдно вызываю одну и ту же функцию два раза? JavaScriptProgrammer Events/DOM/Window 12 08.11.2012 23:41
Как обратиться к элементу, который был добавлен после полной загрузки DOM? LysoSutriN jQuery 5 02.01.2012 16:59
После перехода на IE 9 javascript перестал работать как требуется javascript_pupil Общие вопросы Javascript 2 04.10.2011 11:19
Как заставить работать событие onLoad для embed slim-v Events/DOM/Window 0 16.09.2010 15:07