25.03.2010, 18:07
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Да вроде нет, сначала рендерим, потом засекаем второй раз.
var endTime = Date.now();
printOutput("100 iterations of setZeroTimeout took " + (endTime - startTime) + " milliseconds.");
i = 0;
startTime = Date.now();
setTimeout(test2, 0);
|
|
25.03.2010, 20:39
|
Новичок на форуме
|
|
Регистрация: 23.03.2010
Сообщений: 9
|
|
Там где есть postMessage (а это, я так понимаю, FF, Chrome, Safari) можно сделать ещё проще — навесить на window свой кастомный эвент и будет работать как надо
|
|
25.03.2010, 21:14
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
Цитата:
|
Да вроде нет, сначала рендерим, потом засекаем второй раз.
|
рендеринг происходит после выхода из одного потока и до входа в следующий
__________________
.ня
|
|
22.04.2011, 04:49
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Объясните мне тупому, почему все же отказались от решения с dispatchEvent ?
У меня следующий код вроде везде работает (кроме IE конечно):
var elem = document.createElement('div');
elem.onclick = function(e) {
alert('Ok!');
};
var e = document.createEvent('HTMLEvents');
e.initEvent('click', false/* bubbles */, false/* cancelable */);
elem.dispatchEvent(e);
|
|
22.04.2011, 09:41
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
потому что не работает в ие
__________________
.ня
|
|
22.04.2011, 10:42
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от tenshi
|
потому что не работает в ие
|
для IE у меня еще такой вариант получился:
var xmlDoc = new ActiveXObject('Microsoft.XMLDOM'), done = false;
xmlDoc.onreadystatechange = function() {
if (!done) {
done = true;
alert('Ok!');
}
};
xmlDoc.loadXML('');
но он медленный гад . done нужен потому-что событие срабатывает много раз и всякие this.onreadystatechange = null и xmlDoc.abort() его не отменяют.
tenshi, а зачем нужна фабрика, не проще сразу вызывать переданную функцию? Можно даже в Function.prototype добавить метод.
|
|
22.04.2011, 11:34
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Riim
|
Можно даже в Function.prototype добавить метод.
|
Сообщение от Riim
|
но он медленный гад
|
Подойдет?!
var fragment = document.createDocumentFragment();
var node = document.createElement('div');
node.attachEvent('onpropertychange', function(){
alert('Property change');
});
fragment.appendChild(node);
node.fireEvent('onpropertychange', document.createEventObject());
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
22.04.2011, 11:52
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от B~Vladi
|
|
а что так?
Сообщение от B~Vladi
|
Подойдет?!
|
Супер! Тоже что-то с DocumentFragment пробовал, но у меня почему-то не заработало .
UPD: афигеть, даже без attachEvent можно:
var elem = $d.createElement('div');
$d.createDocumentFragment().appendChild(elem);
elem.onclick = handler;
elem.fireEvent('onclick', $d.createEventObject());
моя счастлив .
Последний раз редактировалось Riim, 22.04.2011 в 11:57.
|
|
22.04.2011, 11:59
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Riim
|
а что так?
|
Великое зло
Даже не пытайтесь переубедить.
Сообщение от Riim
|
Тоже что-то с DocumentFragment пробовал, но у меня почему-то не заработало
|
Интересно, что этот код работает только в ИЕ8:
var fragment = document.createDocumentFragment();
var node = document.createElement('div');
node.attachEvent('onpropertychange', function(){
alert('Property change');
});
fragment.appendChild(node);
node.innerHTML = '';
А вот если поместить его в документ, то всё ок.
Осталось только слить 2 скрипта вместе и готово.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Последний раз редактировалось B~Vladi, 22.04.2011 в 12:02.
|
|
22.04.2011, 12:06
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от B~Vladi
|
Великое зло
|
не хочешь рассказывать почему, злодей!
Сообщение от B~Vladi
|
Интересно, что этот код работает только в ИЕ8
|
ага, вот именно так я и пробовал, но тестил в IE6.
|
|
|
|