Если виджет висит отдельно, то всё прекрасно работает. Но как только я использую функцию "объеденить с предыдущим" когда создаются закладки в боковой панели, скрипт перестаёт работать.
Работает он только если правой кнопкой тыкнуть на место скрипта и нажать "перезагрузить фрейм".
При этом такая проблема наблюдается конкретно в хроме. В опере и лисе всё нормально.
Что может не нравится хрому, почему он не подгружает сразу скрипт js при объединении виджетов "блоков html" ?
Самая жесть что иногда очень редко скрипт успевает подрузиться… С рекламой в html блоках уже намучался, тоже загружается через раз. Может на сервере нажуно какие то настройки выставлять? НЕ могу понять в какую сторону копать совсем...
Зы… тех поддержки скриптов сказали что проблема в инстанте… В виджете "блок html", а в чём не известно…
Погуглите на тему "yandex map не работает в табах" и т.п.
Вот пример ru.stackoverflow.com/questions/671018/не-работает-функция-из-за-displaynone
Вам надо повесить обработчик на таб, чтобы при открытии таба запускался ваш скрипт.
$('#maptabs').on( "tabsactivate", function( event, ui ) {myMap$key.container.fitToViewport();
@demelkar, что-то типа
$('#maptabs').on( "tabsactivate", function( event, ui ) {myMap$key.container.fitToViewport();
Поглядел код двойки, в табах виджетов используется свой код из core.js
$('.widget_tabbed').each(function(){ $('.tabs .tab a', $(this)).click(function(){ var wid = $(this).data('id'); var block = $(this).parent('li').parent('ul').parent('.tabs').parent('.widget_tabbed'); $('.body', block).hide(); $('.links-wrap', block).hide(); $('#widget-'+wid, block).show(); $('#widget-links-'+wid, block).show(); $('.tabs a', block).removeClass('active'); $(this).addClass('active'); return false; }); });
Пока лишь вижу, что у ссылки в каждом табе есть атрибут data-id
От него надо плясать. Определить, в каком табе ваш скрипт, отследить клик по этому табу и запустить/перезапустить выполнение вашего скрипта.
Самое интересное что я вставил в блок другой скрипт виджета… И он точно так же глючит в Лисе (чаще всего не подгружается.) И… работает в хроме… Мой мозх сломался...
Табы очень нужны,… но не глючные :(
строка"display: none" там вроде нет нигде...
$('.body', block).hide();
еще раз! Не должны работать в скрытых слоях скрипты, которые зависят от ширины, высоты, видимости элемента и т.п. Так устроены браузеры. В погоне за оптимизацией они не считают в момент загрузки страницы ничего лишнего, и скрытое содержимое они считают лишним для вычисления всех их атрибутов, позиции и т.п.Самое интересное что я вставил в блок другой скрипт виджета..
Они не глючные. Просто услышьте меня :)Табы очень нужны,… но не глючные :(
Можно попробовать переделать табы… Скрывать их не с помощью
$('.body', block).hide();
что также уберет элемент с экрана, но оставит его видимым.
Надо пробовать.
Вот это будет в следующем релизе, поэтому можете внести себе эту правку. А дальше в своем яваскрипте проверять, на какой таб кликнули. Если на чужой таб, ничего не делать, если на ваш, то выполнить нужные действия — например перезагрузить фрейм или вывести его вообще.
дело в том что скрипты не мои, они сторонние с поставщиками данных. Я их не могу изменить :(
строка"display: none" там вроде нет нигде...
работает именно так. Добавляет к блоку свойство "display: none"
$('.body', block).hide();
еще раз! Не должны работать в скрытых слоях скрипты, которые зависят от ширины, высоты, видимости элемента и т.п. Так устроены браузеры. В погоне за оптимизацией они не считают в момент загрузки страницы ничего лишнего, и скрытое содержимое они считают лишним для вычисления всех их атрибутов, позиции и т.п.Самое интересное что я вставил в блок другой скрипт виджета..
Они не глючные. Просто услышьте меня :)Табы очень нужны,… но не глючные :(
Можно попробовать переделать табы… Скрывать их не с помощью
а, скажем, с помощью добавления класса с position: absolute; margin-left: -9999px;
$('.body', block).hide();
что также уберет элемент с экрана, но оставит его видимым.
Надо пробовать.
Что прописать там нужно чтобы при клике на таб, фрейм его перехагружался автоматом ?
Я попытался что-то написать… в итоге меня на одном источнике данных чёт забанили какую то атаку :))))))