Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.03.2015, 07:18
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Спасибо, настроил и как обычно есть одно маленькое НО.

У меня сразу после загрузки DOM окна, запускается функция которая работает с этим классом "show". И получается что она срабатывает перед назначением класса.

Я пробовал вместо afterLoad поставить beforeLoad, но тогда конечно приведенный вами пример не будет работать.

В общем получается что клик по ссылке находится в index.html а функция обрабатывающая класс show в test.html
Ответить с цитированием
  #12 (permalink)  
Старый 10.03.2015, 07:46
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Все то же что описано выше плюс можно немного уточнить какой именно фрейм брать если он на страницы не один.
$('iframe[src$=' + el.href + ']')
Ответить с цитированием
  #13 (permalink)  
Старый 10.03.2015, 07:50
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

dd_smol, фрейм то один test.html
Ответить с цитированием
  #14 (permalink)  
Старый 10.03.2015, 08:02
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Сообщение от spo Посмотреть сообщение
dd_smol, фрейм то один test.html
Сегодня один, а завтра появится другой это всего на всего мера предосторожности.
Можно пример функции, которая раньше времени отрабатывает.
Ответить с цитированием
  #15 (permalink)  
Старый 10.03.2015, 10:36
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

dd_smol, вот примерно так:
function init() {...}	
google.maps.event.addDomListener(window, 'load', init);
Ответить с цитированием
  #16 (permalink)  
Старый 10.03.2015, 13:06
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

События load не подходит для запуска функции так как класс еще не добавлен к параграфу.
Может попробовать запустить функцию после добавления класса?

jQuery(function($) {
	$('a[rel]').each(function(i, el) {
		$(this).fancybox( {
			href : el.href,
			type: "iframe",
			afterLoad: function() {
				var winFrame = $('iframe[src$="' + el.href + '"]')[0].contentWindow;

                $( winFrame.document ).find('.' + $(el).attr('rel')).addClass('show');

				// Запустить функцию после добавления класса
				winFrame.init();
            }
		});
		
	});
});


http://learn.javascript.ru/play/sOxOx

Последний раз редактировалось dd_smol, 10.03.2015 в 15:52.
Ответить с цитированием
  #17 (permalink)  
Старый 10.03.2015, 21:51
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

dd_smol, событие load взято из примера google maps api.
В том то и дело что во фрейме код google map, который в зависимости от того какому элементу назначен класс curr, устанавливает на карте метки из одного или другого массивов.

На главной странице (index.html) две ссылки "карта компании" и "диллеры", при клике на которые всплывает окно (map.html).
В файле map.html находятся две ссылки аналогичные тем что в файле index.html и код добавляющий карту.
В данном коде есть проверка какая из двух ссылок имеет класс curr.

Таким образом в index.html
<a rel="a" class="fancybox.iframe" href="map.html">a</a>
<a rel="b" class="fancybox.iframe" href="map.html">b</a>

и js
$('a[rel]').each(function(i, elem) {
	$(this).fancybox({
		afterLoad: function() {$($('iframe')[0].contentWindow.document).find('.' + $(elem).attr('rel')).addClass('curr')}
	})
});

В map.html
<a class="a" href="#">a</a>
<a class="b" href="#">b</a>

и js
function init() {
	// google maps code
	coords();
}
function coords() {if($('.a').hasClass('curr')) {coords1()} else {coords2()}}
google.maps.event.addDomListener(window, 'load', init);
Ответить с цитированием
  #18 (permalink)  
Старый 10.03.2015, 21:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

spo,
google.maps.event.addDomListener(window, 'load', window.setTimeout(init, 1000));
Ответить с цитированием
  #19 (permalink)  
Старый 10.03.2015, 22:37
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

рони, такое решение не хотелось использовать
Ответить с цитированием
  #20 (permalink)  
Старый 11.03.2015, 07:35
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

А если обернуть вызов метода в промежуточную функцию и вызвать ее по тому принципу что я предложил выше?

function testFunc() {
	google.maps.event.addDomListener(window, 'load', init);
}


jQuery(function($) {
	$('a[rel]').each(function(i, el) {
		$(this).fancybox( {
			href : el.href,
			type: "iframe",
			afterLoad: function() {
				var winFrame = $('iframe[src$="' + el.href + '"]')[0].contentWindow;

                $( winFrame.document ).find('.' + $(el).attr('rel')).addClass('show');

				// Запустить функцию после добавления класса
				winFrame.testFunc();
            }
		});
		
	});
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FancyBox и Iframe FLion jQuery 4 22.12.2016 02:05
как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы? DeUre Общие вопросы Javascript 14 17.12.2013 16:37
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
Как получить значение атрибута тега iframe? Dimaz Общие вопросы Javascript 5 15.12.2012 15:40
Передать значение из FancyBox IfFrame в родительское окно. mnk Events/DOM/Window 2 03.04.2012 14:16