Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   запуск и остановка скрипта при изменении правила display (https://javascript.ru/forum/dom-window/44733-zapusk-i-ostanovka-skripta-pri-izmenenii-pravila-display.html)

onuvidelsolnce 30.01.2014 21:56

запуск и остановка скрипта при изменении правила display
 
имеется скрипт, который требуется запускать при изменении правила display у некоторого объекта X на block, и его остановка при, опять-таки, изменении правила display на none у этого же объекта. Как это сделать? спасибо.

ksa 31.01.2014 08:32

Цитата:

Сообщение от onuvidelsolnce
Как это сделать?

Как вариант, менять это свойство некой функцией, которая и будет запускать тот скрипт...

onuvidelsolnce 31.01.2014 14:52

Сделал в песчнице эмуляцию моего вопроса. Может я вообще не то спрашиваю.

Вообщем, есть анимация самолета в блоке, который можно свернуть(display:none) и развернуть(display:block)

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

Если свернуть и развернуть, то анимация прекращатся, как это испавить... Что бы анимация не прекращалась или точнее что бы она вновь запусклась при развороте блока, как я понимаю. Спасибо

kostyanet 01.02.2014 23:59

попе и block атрибуты разметки. скрывать и показывать елементы полезно с помощью visibility

tenshi 02.02.2014 09:47

Забейте на ие9-)
http://www.w3schools.com/css/css3_animations.asp

onuvidelsolnce 03.02.2014 00:47

Так что бы сделать, что б анимация не прикращалась после свертывания и развертывания контейнера...

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

onuvidelsolnce 03.02.2014 00:50

Цитата:

Сообщение от kostyanet (Сообщение 295254)
попе и block атрибуты разметки. скрывать и показывать елементы полезно с помощью visibility

скрывает и показывает функция jquery: onclick="$('.wrap').slideToggle('normal');return false;"

Deff 03.02.2014 04:50

<script src="http://code.jquery.com/jquery-latest.js"></script>

<input id="toggle" type="button" value="toggle">
<div style="position:relative;">
<iframe name="ff2" src="" height=100%  width=100% style="z-ndex:-100;position:absolute"  border="0" scrolling="no"/></iframe>
<div id="my" style="background-color:blue; min-height:34px;min-width:34px;"></div>
</div>




<script type="text/javascript">
$('#toggle').click(function() {
 $('#my').toggle()
});
function tstDiv() {
   alert($('#my').is(':visible')?"Показан":"Cкрыт");
}
</script>

<script type="text/javascript">
// Тестируем смену размера iframe
var timeoutId;
$(window).load(function() {
 ff2.onresize = function() {
   clearTimeout(timeoutId)
   timerId = setTimeout(tstDiv,12);
 }
});
</script>

onuvidelsolnce 03.02.2014 14:38

Цитата:

Сообщение от Deff (Сообщение 295483)
<script src="http://code.jquery.com/jquery-latest.js"></script>

<input id="toggle" type="button" value="toggle">
<div style="position:relative;">
<iframe name="ff2" src="" height=100%  width=100% style="z-ndex:-100;position:absolute"  border="0" scrolling="no"/></iframe>
<div id="my" style="background-color:blue; min-height:34px;min-width:34px;"></div>
</div>




<script type="text/javascript">
$('#toggle').click(function() {
 $('#my').toggle()
});
function tstDiv() {
   alert($('#my').is(':visible')?"Показан":"Cкрыт");
}
</script>

<script type="text/javascript">
// Тестируем смену размера iframe
var timeoutId;
$(window).load(function() {
 ff2.onresize = function() {
   clearTimeout(timeoutId)
   timerId = setTimeout(tstDiv,12);
 }
});
</script>


Что-то не так, не работает
http://learn.javascript.ru/play/ytkKvb

Как я понимаю, нужно вместо jQuery(document).ready... вставить событие изменения состояния конетейнера, если display block запустить, если display none остановить как-то так... Но есть ли такие события?

Deff 03.02.2014 16:44

onuvidelsolnce,
:blink: Отслеживать изменение размеров нун на обертке скрываемого блока, посколь при скрытии iframe - его размеры не меняются!
Поэтому остлеживаемый блок id="my" вставлен внутрь обертки
вдобок у Вас анимация, тады в ослеживании нун ставить задержку timerId = setTimeout(tstDiv,12);
На величину более длительности анимации ( сейчас 12ms) (Либо отслеживать текущую высоту блока и совершать действия при её минимуме)
Зы: В Вашем примере даже фрейм не установлен


Часовой пояс GMT +3, время: 23:25.