Я пытаюсь вычислить прошедшее время, когда элемент нарисован на DOM с момента начала script или если конкретный элемент даже был окрашен вообще. Я вставляю градиент фона в HTML, а затем используя javascript для создания случайных (облака, которые являются просто большими периодами с текстовой тенью) в нескольких местах по всему экрану (некоторые отрицательные, некоторые положительные, некоторые в пределах видимости, некоторые за пределами сфера применения).
В настоящее время мой код выглядит следующим образом:
<html>
<head>
<style>
.container {
border: 1px solid #3b599e;
overflow: hidden;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#315d8c', endColorstr='#84aace'); /* for IE */
background: -webkit-gradient(linear, left top, left bottom, from(#315d8c), to(#84aace)); /* for webkit browsers */
background: -moz-linear-gradient(top, #315d8c, #84aace); /* for firefox 3.6+ */
}
.cloud {
color: #fff;
position: relative;
font: 100% "Times New Roman", Times, serif;
text-shadow: 0px 0px 10px #fff;
line-height: 0;
}
</style>
<script type="text/javascript">
function cloud(){
var b1 = "<div class=\"cloud\" style=\"font-size: ";
var b2 = "px; position: absolute; top: ";
document.write(b1+"300px; width: 300px; height: 300"+b2+"34px; left: 28px;\">.<\/div>");
document.write(b1+"300px; width: 300px; height: 300"+b2+"46px; left: 10px;\">.<\/div>");
document.write(b1+"300px; width: 300px; height: 300"+b2+"46px; left: 50px;\">.<\/div>");
document.write(b1+"400px; width: 400px; height: 400"+b2+"24px; left: 20px;\">.<\/div>");
}
function clouds(){
var top = ['-80','80','240','400'];
var left = -10;
var a1 = "<div style=\"position: relative; top: ";
var a2 = "px; left: ";
var a3 = "px;\"><script type=\"text/javascript\">cloud();<\/script><\/div>";
for(i=0; i<8; i++)
{
document.write(a1+top[0]+a2+left+a3);
document.write(a1+top[1]+a2+left+a3);
document.write(a1+top[2]+a2+left+a3);
document.write(a1+top[3]+a2+left+a3);
if(i==4)
{
left = -90;
top = ['0','160','320','480'];
}
else
left += 160;
}
}
</script>
</head>
<body style="margin:0;padding:0;">
<div class="container" style="width: 728px; height: 90px;">
<script>clouds();</script>
</div>
</body>
</html>
Затем я запускаю это внутри iframe, пытаясь определить, будут ли сначала нарисованы видимые элементы, или если они расписаны в порядке отображения (в значительной степени это просматриваемая реклама или она не видна).
Я еще не нашел твердую технику, которая работает с кроссбраузером, чтобы обнаружить это. В chrome я смог увидеть, как он работает при вставке изображений, так как видимые изображения сначала запускают событие onload (даже если они были в конце DOM), но это было не так для Firefox или IE.