Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 25.03.2010, 11:23
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

В Firefox по моему дольше грузится если стоит "about:blank" а если "javascript:;" то быстрее..
вообще about:blank это для ИЕ и опера, для остальных можно javascript:; прописывать..

П.С. Если не смотреть фаербагом в момент загрузки, должно быть быстрее )
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #22 (permalink)  
Старый 25.03.2010, 14:29
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Сообщение от Nekromancer Посмотреть сообщение
На сколько кардинальные?)
Ну если в FF разница раза в три 210ms и 70ms, то в других браузерах разница 10-30 ms, например 170ms на обычную загрузку картинки и 155ms на загрузку картинку по error.
Это на моей тестовой страничке.
Причем такое ощущение, что опера и сафари плюют на очередность и сначала загружают мелкие картинки, а потом тяжелые.
Ответить с цитированием
  #23 (permalink)  
Старый 25.03.2010, 14:39
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Другого варианта по моему просто нет. Всякие там фаербаги и всё такое, ловят открытие соединения внутренними средствами браузера, которые к сожалению(или к счастью) просто так недоступны.

П.С. Даёж событие onconnect
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #24 (permalink)  
Старый 26.03.2010, 11:35
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Ну или onStartLoading )))
Ответить с цитированием
  #25 (permalink)  
Старый 05.04.2010, 15:21
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Веселье продолжается.
<script type="text/javascript">
//Чем раньше ставим этот код, тем лучше
var LoadCounter={};

(function(){
var ERR_TIME = 'pict_load_time';
var LOAD_TIME = 'time';
var id = 'mysite.ru';
var startTime = new Date();
var resultStr = '';
var errorTime;

function now(){
   return (new Date).getTime();
}

function sendData() {
   if (location.host.search(id) == -1)
       return false;
   var img = document.createElement('img');
   var host = location.host.replace(/^www\./, '');
   img.src = 'http://mysite.ru/log_time_download.php?id='+id+'&url='+escape(host)+escape(location.pathname)+resultStr;
   img.style.position = 'absolute';
   img.style.left = '-5px';
   img.style.top = '-5px';
   img.style.width = '1px';
   img.style.height = '1px';
   document.body.insertBefore(img, document.body.firstChild);
}

LoadCounter.isError = function(el) {
   errorTime = now();
   if (el)
       el.src = 'http://mysite.ru/1px.gif?r='+Math.random();
}

LoadCounter.isLoad = function() {
   var secondTime = now() - errorTime;
   if (resultStr) {
       resultStr += '&'+ERR_TIME+'='+secondTime;
       sendData();
   } else {
       resultStr += '&'+ERR_TIME+'='+secondTime;
   }
}

LoadCounter.simpleLoad = function() {
   var simpleTime = now() - startTime;
   if (resultStr) {
       resultStr += '&'+LOAD_TIME+'='+simpleTime;
       sendData();
   } else {
       resultStr += '&'+LOAD_TIME+'='+simpleTime;
   }
}
})()
</script>

где-нибудь в серединке:
<script type="text/javascript">
document.write('<img src="http://mysite.ru/1px.gif?r='+Math.random()+'" onload="LoadCounter.simpleLoad();" />');
</script>
<img src="about:blank" onerror="LoadCounter.isError(this)"  onload="LoadCounter.isLoad(this)" />


pict_load_time - время между onerror и onload первой картинки
time - время от скрипта, до загрузки картинки (картинка вставляется с помощью document.write)

Т.е. по идее onload происходит один раз и никаких двойных и более времен быть не может.
Однако имеем, что имеем (опять же в FF):
&time=742&pict_load_time=200&time=2502&pict_load_t ime=1762&time=2597&pict_load_time=1857&time=2650&p ict_load_time=1910&time=2715...

Первым делом подумал про аякс, но он не используется на странице, да и не дружит аякс с document.write.
Опять же ошибка повторяется не у меня, поэтому потыркаться возможности нету, так что играем в гадалку...

Проблему можно решить в лоб, проверяя, первая ли это загрузка, но хочется понять, почему так происходит...
Ответить с цитированием
  #26 (permalink)  
Старый 05.04.2010, 15:46
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

я так понимаю у тебя не одна картинка загружается так.. а в коде я нигде не увидел, чтоб очищалась "resultStr".. загрузка проходит то один раз.. но параметры добавляются несколько раз.. как можешь заметить у них время разное)
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #27 (permalink)  
Старый 05.04.2010, 15:56
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

В том то и дело, что картинка создается один раз.
По крайней мере в коде это все указано в единственном экземпляре.

Ну и если бы она создавалась не один раз - это было бы повальное явление во всех браузерах... А так происходит только в ФФ, да и то не всегда...

Последний раз редактировалось Snipe, 05.04.2010 в 16:08.
Ответить с цитированием
  #28 (permalink)  
Старый 05.04.2010, 16:04
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

вот я и клоню к тому, что нужно добавить "resultStr = '';" в конец "isLoad", или лучше в sendData
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.

Последний раз редактировалось Nekromancer, 05.04.2010 в 16:13.
Ответить с цитированием
  #29 (permalink)  
Старый 05.04.2010, 16:19
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Ничего не понял.
как это поможет? статистика то продолжит отправляться на все вымышленные onload'ы...
В итоге будет не одна строка длинная, а много мелких, которые по сути тоже не верны. =\

Интересна причина, а не последствия. Последствия можно легко устранить так же как в твоем варианте с Оперой.
Ответить с цитированием
  #30 (permalink)  
Старый 05.04.2010, 16:31
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Непонятно конечно.. эт надо плотно покопаться %)
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение координат от картинки EmDmAl Events/DOM/Window 4 08.11.2009 14:34
Смена картинки (бекграунд дива ) при событии (нажатие клавиш или клавиши и мыши) Monster Events/DOM/Window 5 01.11.2009 01:16
Как изменить размер картинки? Mihail Общие вопросы Javascript 1 25.10.2009 13:42
Как заранее закэшировать картинки в браузере IE 6 ilshat Internet Explorer 8 30.01.2009 15:26
разное время выполнения операции ropowek Events/DOM/Window 2 08.10.2008 13:27