2011-11-29 19 views
8

Tôi đã viết một plugin nhỏ có thời gian tải/hiển thị trang. Nó thu thập thời gian kết thúc tại $ (document) .ready và tôi đã đặt đoạn mã thu thập thời gian bắt đầu ngay sau thẻ <title>.Sự kiện sớm nhất và mới nhất mà jquery có thể kết nối là gì?

Tôi muốn điều này ít gây khó chịu, vì vậy có vẻ như có sự kiện sớm hơn .ready nơi tôi có thể thu thập thời gian bắt đầu trang có thể đo lường sớm nhất.

Đây là javascript hiện gây khó chịu

<title></title> 
<script type="text/javascript"> 
    var startTime = (new Date()).getTime(); 
</script> 

Đây là plugin:

(function ($) { 

    $(document).ready(function() { 
     var endTime = (new Date()).getTime(); 
     var millisecondsLoading = endTime - startTime; 

     $.get('hicmah.ashx?duration=' + millisecondsLoading, function (data) { 
     }); 
    }); 

})(jQuery); 
+0

kết nối với sự kiện 'sẵn sàng' sẽ là số liệu thực tế cho thời gian tải trang trước khi thực thi nhiều mã hơn. – zzzzBov

+0

JavaScript, bao gồm jQuery, sẽ không làm bất cứ điều gì trước khi tài liệu sẵn sàng. Nếu bảng điều khiển gỡ lỗi trong Firebug và Chrome không phù hợp với nhu cầu của bạn, điều gì đó giống như boomerang.js có thể? http://yahoo.github.com/boomerang/doc/ – anderssonola

+1

Trừ khi tôi hiểu lầm, điều gì về việc thực thi chức năng ngay lập tức? Sau đó, nó về cơ bản sẽ chạy ngay sau khi nó được phân tích cú pháp. – pimvdb

Trả lời

1

Có plugin làm công việc này là không thể vì plugin có thể được sử dụng anywh ere trên trang. Cách tốt nhất để đạt được điều này là có được thời gian ngay khi bắt đầu đánh dấu html và ngay sau khi kết thúc đánh dấu html, nó sẽ cho bạn thời gian tốt nhất.

2

Bạn có thể sử dụng onreadystatechange, DOMContentLoaded, và onload, đó là những gì jQuery móc vào với shim ready sự kiện .

if (document.addEventListener) { 
    document.addEventListener('DOMContentLoaded', callback, false); 
    window.addEventListener('load', callback, false); 
} else { 
    document.attachEvent('onreadystatechange', callback); 
    window.attachEvent('onload', callback); 
} 

Ngoài ra, bạn có thể đảm bảo rằng trang web của bạn có một thẻ script ở phía trên cùng của trang, và ở phía dưới:

<html> 
    <head> 
    <script type="text/javascript"> 
     window.begin = new Date(); 
    </script> 
    ... 
    </head> 
    <body> 
    ... 
    <script type="text/javascript"> 
     window.end = new Date(); 
    </script> 
    </body> 
</html> 
0

Câu trả lời này sẽ giúp:

Load and execution sequence of a web page?

> roughly the execution flow is about as follows: 
> 
> The HTML document gets downloaded The parsing of the HTML document 
> starts HTML Parsing reaches <script src="jquery.js" ... jquery.js is 
> downloaded and parsed HTML parsing reaches <script src="abc.js" ... 
> abc.js is downloaded, parsed and run HTML parsing reaches <link 
> href="abc.css" ... abc.css is downloaded and parsed HTML parsing 
> reaches <style>...</style> Internal CSS rules are parsed and defined 
> HTML parsing reaches <script>...</script> Internal Javascript is 
> parsed and run HTML Parsing reaches <img src="abc.jpg" ... abc.jpg is 
> downloaded and displayed HTML Parsing reaches <script src="kkk.js" ... 
> kkk.js is downloaded, parsed and run Parsing of HTML document ends 
Các vấn đề liên quan