RIA crumbs.

Blog about RIA development. ActionScript, JavaScript and more.

Archive for the ‘Internet Explorer’ tag

Тонкости работы с Alert под IE и FF.

one comment

Недавно наткнулся на довольно интересный баг с виджетом Alert. Баг заключается в том, что если мы используем в Alert кнопки, к примеру YES и NO, и вызываем его по старинке:
[code lang="javascript"]
Alert.show( "Some text", "Some title", alertHandler );
[/code]
то все как бы работает. Но в FF у нас все отрабатывает отлично, и мы радостно продолжаем дальше работать, а в IE 6 ( дома нет IE 7, поэтому пишу про 6) перед появлением нашего Alert’a мы наблюдаем ошибку:

TypeError: Error #2007: Parameter source must be non-null.
at flash.accessibility::Accessibility$/sendEvent()
at mx.accessibility::AlertAccImpl/mx.accessibility:AlertAccImpl:
:eventHandler()
at flash.events::EventDispatcher/flash.events:EventDispatcher:
:dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()
at mx.core::UIComponent/set initialized()
at mx.managers::LayoutManager/::doPhasedInstantiation()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/::callLaterDispatcher2()
at mx.core::UIComponent/::callLaterDispatcher()

Разглядев в дебагере, где у нас нашлись грабли, видим, что Alert.defaultButton = null. Первая мысль, которая у меня появилась: “А причем тут IE?”; в результате устранения граблей мысль перешла в следующую: “И куда смотрит FF?”.
Суть проблемы в том, что по умолчанию Alert.defaultButton равен 0×0004 ( то есть кнопка OK ), которой в нашем случае нет и в проекте. Вызвав наш Alert с указанием в качестве кнопи по умолчанию одной из существущих у нас, к примеру YES:
[code lang="javascript"]
Alert.show( "Some text", "Some title", alertHandler, null, 0x0001 );
[/code]
всё начинает отлично работать и в IE и в FF.

Если кто знает ответ на то, почему FF “забил” на null, пожалуйста, поделитесь знанием.

UPD: Как по мне, то и Adobe не очень правы, можно было бы ставить по умолчанию не кноку OK, а первую копку в массиве кнопок который есть в Alert.

Written by reijii

October 24th, 2007 at 1:03 am

Posted in Flex,UI

Tagged with , , ,