Как правильно объединять виджеты "блок html".

 
Посетитель
small user social cms
Медаль
Сообщений: 171
В видежете "html блок" у меян вставляется ява скрипт.

Если виджет висит отдельно, то всё прекрасно работает. Но как только я использую функцию "объеденить с предыдущим" когда создаются закладки в боковой панели, скрипт перестаёт работать.

Работает он только если правой кнопкой тыкнуть на место скрипта и нажать "перезагрузить фрейм".

При этом такая проблема наблюдается конкретно в хроме. В опере и лисе всё нормально.

Что может не нравится хрому, почему он не подгружает сразу скрипт js при объединении виджетов "блоков html" ?

Самая жесть что иногда очень редко скрипт успевает подрузиться... С рекламой в html блоках уже намучался, тоже загружается через раз. Может на сервере нажуно какие то настройки выставлять ? НЕ могу понять в какую сторону копать совсем...

Зы... тех поддержки скриптов сказали что проблема в инстанте... В виджете "блок html", а в чём не известно...
Редактировалось: 2 раз (Последний: 17 августа 2018 в 16:50)
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2570
@demelkar, в инстанте нет проблемы, есть проблемы в браузерах. Например, нельзя получить ширину и высоту скрытого слоя (с помощью display: none;). Нельзя проскроллить вверх скрытый элемент.

Погуглите на тему "yandex map не работает в табах" и т.п.
Вот пример https://ru.stackoverflow.com/questions/671018/не-работает-функция-из-за-displaynone

Вам надо повесить обработчик на таб, чтобы при открытии таба запускался ваш скрипт.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2570
@demelkar, что-то типа

Код JS:
  1. $('#maptabs').on( "tabsactivate", function( event, ui ) {myMap$key.container.fitToViewport();
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
small user social cms
Медаль
Сообщений: 171
А в каком файле этот таб прописан ? :)

Zau4man:

@demelkar, что-то типа

Код JS:
  1. $('#maptabs').on( "tabsactivate", function( event, ui ) {myMap$key.container.fitToViewport();
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2570
@demelkar, я лишь привел пример для табов из jqueryul https://jqueryui.com/tabs/
Поглядел код двойки, в табах виджетов используется свой код из core.js

Код JS:
  1.  
  2. $('.widget_tabbed').each(function(){
  3.  
  4. $('.tabs .tab a', $(this)).click(function(){
  5. var wid = $(this).data('id');
  6. var block = $(this).parent('li').parent('ul').parent('.tabs').parent('.widget_tabbed');
  7. $('.body', block).hide();
  8. $('.links-wrap', block).hide();
  9. $('#widget-'+wid, block).show();
  10. $('#widget-links-'+wid, block).show();
  11. $('.tabs a', block).removeClass('active');
  12. $(this).addClass('active');
  13. return false;
  14. });
  15.  
  16. });
  17.  
Универсальное решение пока не приходит на ум...
Пока лишь вижу, что у ссылки в каждом табе есть атрибут data-id

Как правильно объединять виджеты \"блок html\".

От него надо плясать. Определить, в каком табе ваш скрипт, отследить клик по этому табу и запустить/перезапустить выполнение вашего скрипта.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
small user social cms
Медаль
Сообщений: 171
"display: none" там вроде нет нигде... Интересно что если вставлять просто в html блок всё работает. не работает именно при объединении виджетов. я не програмист, мне сложно понять что там с табами не так :(

Самое интересное что я вставил в блок другой скрипт виджета... И он точно так же глючит в Лисе (чаще всего не подгружается.) И... работает в хроме... Мой мозх сломался...

Табы очень нужны,.. но не глючные :(
Редактировалось: 5 раз (Последний: 18 августа 2018 в 01:03)
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2570
@demelkar:
"display: none" там вроде нет нигде...
строка
Код JS:
  1. $('.body', block).hide();
работает именно так. Добавляет к блоку свойство "display: none"
@demelkar:
Самое интересное что я вставил в блок другой скрипт виджета..
еще раз! Не должны работать в скрытых слоях скрипты, которые зависят от ширины, высоты, видимости элемента и т.п. Так устроены браузеры. В погоне за оптимизацией они не считают в момент загрузки страницы ничего лишнего, и скрытое содержимое они считают лишним для вычисления всех их атрибутов, позиции и т.п.
@demelkar:
Табы очень нужны,.. но не глючные :(
Они не глючные. Просто услышьте меня :)

Можно попробовать переделать табы... Скрывать их не с помощью
Код JS:
  1. $('.body', block).hide();
а, скажем, с помощью добавления класса с position: absolute; margin-left: -9999px;
что также уберет элемент с экрана, но оставит его видимым.

Надо пробовать.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3588
Вот это будет в следующем релизе, поэтому можете внести себе эту правку. А дальше в своем яваскрипте проверять, на какой таб кликнули. Если на чужой таб, ничего не делать, если на ваш, то выполнить нужные действия - например перезагрузить фрейм или вывести его вообще.
Посетитель
small user social cms
Медаль
Сообщений: 171
Loadырь:

Вот это будет в следующем релизе, поэтому можете внести себе эту правку. А дальше в своем яваскрипте проверять, на какой таб кликнули. Если на чужой таб, ничего не делать, если на ваш, то выполнить нужные действия - например перезагрузить фрейм или вывести его вообще.

дело в том что скрипты не мои, они сторонние с поставщиками данных. Я их не могу изменить :(
Посетитель
small user social cms
Медаль
Сообщений: 171
А без педелки табов, добавить что-нибудь чтоб при нажатии перезагружался фрейм можно ?

Zau4man:

@demelkar:
"display: none" там вроде нет нигде...
строка
Код JS:
  1. $('.body', block).hide();
работает именно так. Добавляет к блоку свойство "display: none"
@demelkar:
Самое интересное что я вставил в блок другой скрипт виджета..
еще раз! Не должны работать в скрытых слоях скрипты, которые зависят от ширины, высоты, видимости элемента и т.п. Так устроены браузеры. В погоне за оптимизацией они не считают в момент загрузки страницы ничего лишнего, и скрытое содержимое они считают лишним для вычисления всех их атрибутов, позиции и т.п.
@demelkar:
Табы очень нужны,.. но не глючные :(
Они не глючные. Просто услышьте меня :)

Можно попробовать переделать табы... Скрывать их не с помощью
Код JS:
  1. $('.body', block).hide();
а, скажем, с помощью добавления класса с position: absolute; margin-left: -9999px;
что также уберет элемент с экрана, но оставит его видимым.

Надо пробовать.
Посетитель
small user social cms
Медаль
Сообщений: 171
"icms.events.run('icms_tab_cliked', this);"

Что прописать там нужно чтобы при клике на таб, фрейм его перехагружался автоматом ?

Я попытался что-то написать.... в итоге меня на одном источнике данных чёт забанили какую то атаку :))))))
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.