Здравствуйте.
Вкратце опишу ситуацию.
На странице можно выбрать изображение и оно загрузится на сервер.
При выборе изображения срабатывает onchange на input type=file и форма сабмитится в скрытый фрейм. В ответе фрейма - js код, который на основную страницу внедряет HTML код с только что загруженной картинкой. Короче, стандартный метод для загрузки файла без перезагрузки страницы.
Для того, что бы удалить только что загруженное изображение мне достаточно из формы основной страницы удалить hidden поле с ID изображения. Тогда, при подаче объявления загруженное изображение не прикрепится к объявлению, а крон пройдет и убьет этот файл изображения (т.к. у него нет связи с объявлением).
Так вот, что бы удалить hidden поле из основной страницы я для каждого изображения рисую кнопочку в виде удаления. И на эту ссылку-кнопку я ставлю события вот так:
setInterval(function() {
// получаю все ссылки-кнопки удаления изображений
var removed_links = Krugozor.DOM.getElementsByClassName(.....);
for (var i=0; i < removed_links.length; i++) {
// это тег и на него еще не назначено событие...
if (removed_links[i].nodeType == 1 && !removed_links[i].getAttribute('data-event')) {
Krugozor.Events.attachEvent(removed_links[i], 'click', function(e){
// назначаю событие
alert('Кликнули на ссылку удаления изображения');
});
// флаг, что на эту кнопку-ссылку поставлено событие
removed_links[i].setAttribute('data-event', '1');
}
}
}, 500);
Соответственно метод Krugozor.Events.attachEvent:
Krugozor.Events = {
/**
* Назначает элементу element событие event типа event_type.
*
* @param object element
* @param string тип события, например "click"
* @param function event обработчик события
* @return object element
*/
attachEvent: function(element, event_type, event) {
if (document.addEventListener) { // W3C
element.addEventListener(event_type, event, false);
} else if (document.attachEvent) { // IE
element.attachEvent('on' + event_type, event);
}
return element;
},
В FF, IE 11 и в Safari - все ок.
В Opera и Chrome происходит следующее:
Загрузили изображение 1 - событие проставилось на кнопку-ссылку удаления изображения №1.
Загрузили изображение 2 - событие проставилось на кнопку-ссылку удаления изображения №2 и
куда-то пропало с кнопки-ссылки удаления изображения №1.
Как это понимать? Я не могу это никак даже объяснить. Куда пропадают события?