Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   создание собственных событий (https://javascript.ru/forum/misc/7756-sozdanie-sobstvennykh-sobytijj.html)

jetli13 18.02.2010 11:25

создание собственных событий
 
Есть 2 дива в каждом из которых по одному фрейму которые уже подгружены (на onload не повесишься). Есть также две конпки для переключения между дивами. Т.е княпнул на первую кнопку
div1 display:none;
div2 display:block;
княпнул на другую все наоборот.
Можно ли создать из этого переключения событие которое бы оповещало о том что див был скрыт/показан, и вызывал бы функции которые связаны с этим событием. Очень не охото прописывать все в эти кнопки.

спаибо.

UPD:
кое что нашел http://habrahabr.ru/blogs/javascript/70793/

subzey 18.02.2010 18:06

Если целью скрипта является лишь смена отображения, можно менять класс у обвертки, таким образом убрав все данные об открытых блоках в одно место и делегировав состояния css, вместо того, чтобы их отслеживать руками.

Например, так:
<style type="text/css">
	.tpl-togglebox {display: none}
	#tpl-togglebox-group.state-1 .tpl-togglebox-1,
	#tpl-togglebox-group.state-2 .tpl-togglebox-2 {
		display: block;
	}
</style>
<script type="text/javascript" src="/misc/pack.2.js"></script>
<script type="text/javascript">
	function switchToggleBox(n){
		var toggleboxGroup = document.getElementById("tpl-togglebox-group");
		toggleboxGroup.className = (toggleboxGroup.className.replace(/(^|\s)+state-[^\s]+/g, '') + " state-" + n);
	}
</script>

<div id="tpl-togglebox-group" class="state-1">
	<div class="tpl-togglebox tpl-togglebox-1">Блок 1</div>
	<div class="tpl-togglebox tpl-togglebox-2">2-й блок</div>
</div>
<button onclick="switchToggleBox(1)">1</button>
<button onclick="switchToggleBox(2)">2</button>

jetli13 18.02.2010 18:13

Нет целью является зажигание события.
Т.е. перед тем как див скроется должно зажечься "я скрываюсь". И все объекты которые прослушивают это событие получили извещение и соответственным образом отреагировали на него.

subzey 18.02.2010 19:18

jetli13,
если Вы говорите про обычные события javascript, то надеюсь, Вы отчетливо понимаете, что у любого события есть srcElement, и событие «всплывает» от него вниз по ДОМу к корню, игнорируя соседние ветви.
Затруднение не в том, чтобы запустить событие, а в том, пройдет ли это событие через прослушивающий элемент. Чтобы довести событие до любого произвольного элемента ДОМа, придется вызывать его для каждого концевого элемента каждой подветви. Это возможно, но зачем?

jetli13 19.02.2010 10:11

Нет, все же я говорю про создание собственных событий на которые можно повесится.
Вцелом ответ я нашел, в посте ссылку на который выложил выше.

DooMer 19.02.2010 12:07

События по типу онШов нету, но можна запустить таймер функцию которая будет раз в энное время проверять показан див или скрыт

jetli13 19.02.2010 14:30

Цитата:

Сообщение от DooMer (Сообщение 45395)
События по типу онШов нету

именно по этому я хочу создать свое.
А таймер на мой взгляд, нагрузка лишняя

DooMer 19.02.2010 14:46

хм, на таймерах не будет осбой нагруки, потому как сообщения таймера не остаються надолго в очереди сообщений(с точки зрения прикладного программинга). А учитывая что в ф-ции будет всего 1-2 if с проверкой на видимость дива, то проблем со скоростью не будет. Ресурсов будет кушать меньше чем часы

sektorA 20.02.2010 14:31

Вопрос каким образом или как возможно закодировать событие onMouseOver в базу 64 киньте какой-нить пример.

<span onMouseover="window.alert('Пример использования события onMouseOver');">Whatever</span>

хотелось бы видеть код таким образом при наведении мышки исполнялся бы код но в базе 64
возможно ли это
<a href="data:text/html;base64, PHNjcmlwdCBOQU1FPSIiIG9ubW91c2VvdmVyPWFsZXJ0KGFsZX J0KT48L3NjcmlwdD4=">click me</a>


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