Есть примерно такой код:
<select id="free_size" name="free_size">...</select>
/* этот код идет сразу после элемента выше*/
jQuery('#free_size').change(function () {
...
});
...
/*этот код подключается в футере через внешний файл*/
jQuery(window).load(function() {
...
setTimeout(function() {
...
/*$ это prototypeJs; вообще, скриптов различных много (магазин), но не думаю, что это очень важно*/
$('free_size').triggerEvent('change');
...
}, 2900);
}
...
Element.prototype.triggerEvent = function(eventName)
{
if (document.createEvent)
{
var evt = document.createEvent('HTMLEvents');
evt.initEvent(eventName, true, true);
return this.dispatchEvent(evt);
}
if (this.fireEvent)
return this.fireEvent('on' + eventName);
};
Он хорошо работает в хроме/хромиуме/эксплорере, но не работает в огнелисе. Конкретно, нет реакции на диспатч. Однако, если добавить alert перед диспатчем ИЛИ брейкпоинт в отладчике поставить на него, то все хорошо срабатывает и работает как надо. Предполагаю, что привязка события к элементу просто не успевает инициализироваться, но в других же браузерах все хорошо.
Буду очень рад, если кто-нибудь объяснит эту магию :-)