2009-12-02 47 views
185

Vào ngày 1 tháng 12 năm 2009, Google đã thông báo hỗ trợ cho asynchronous Google Analytics tracking.Trình duyệt nào hỗ trợ <script async = "async" />?

Theo dõi không đồng bộ được thực hiện bằng cách sử dụng chỉ thị async cho thẻ <script>.

Trình duyệt nào hỗ trợ chỉ thị async (<script async="async" />) và kể từ phiên bản nào?

+1

Đúng trên trang bạn đã liên kết tới: "Firefox 3.6 là trình duyệt đầu tiên chính thức cung cấp hỗ trợ cho tính năng mới này" FWIW là một tính năng HTML5, nhanh chóng được hỗ trợ tốt hơn và tốt hơn. –

+50

Thông số HTML5 nói rằng async = "true" là bất hợp pháp. Là thuộc tính HTML boolean, sự hiện diện của thuộc tính cho biết "true", trong khi sự vắng mặt của thuộc tính bằng "false". Nếu thuộc tính có mặt, các giá trị hợp lệ duy nhất cho thuộc tính là "" và "không đồng bộ". –

+3

Đây phải là dấu trang để kiểm tra thường xuyên cho bất kỳ ai quan tâm đến vấn đề này: http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5%29 – pumpkinthehead

Trả lời

155

Sự hỗ trợ async theo quy định của google được thực hiện bằng hai phần:

  • sử dụng tập lệnh trên trang của bạn (kịch bản được cung cấp bởi google) để viết ra một < kịch bản > thẻ để DOM .

  • tập lệnh đó có thuộc tính async = "true" để báo hiệu cho các trình duyệt tương thích mà nó có thể tiếp tục hiển thị trang.

Phần đầu tiên hoạt động trên trình duyệt mà không cần sự hỗ trợ cho <script async.. thẻ, cho phép họ tải async với một "hack" (mặc dù một trong khá rắn), và cũng cho phép render trang mà không cần chờ ga.js được lấy ra.

Phần thứ hai chỉ ảnh hưởng đến trình duyệt tương thích mà hiểu được thuộc tính html async

  • FF 3.6+
  • FF dành cho Android All Versions
  • IE 10+ (bắt đầu với preview 2)
  • Chrome 8+
  • Chrome dành cho Android Tất cả các phiên bản
  • Safari 5.0+
  • iOS Safari 5.0+
  • Trình duyệt Android 3.0 trở lên (Honeycomb trên lên)
  • Opera 15.0+
  • Opera Mobile 16.0+
  • Opera Mini Không (tính đến 8,0)

Cách "html5 thích hợp" để chỉ định async là với <script async src="...", không phải <script async="true". Tuy nhiên, ban đầu các trình duyệt không hỗ trợ cú pháp này, cũng như chúng không hỗ trợ thiết lập thuộc tính script trên các phần tử được tham chiếu.Nếu bạn muốn điều này, danh sách các thay đổi:

  • FF 4+
  • IE 10+ (preview 2 trở lên)
  • Chrome 12 +
  • Chrome For Android 32+
  • Safari 5.1 trở lên
  • Không có phiên bản Android
+32

Tôi không chắc chắn bạn thậm chí cần async = "true", bạn chỉ có thể viết 'async' – vsync

+4

vì vậy nếu tôi tạo ra các thẻ script như google hiện nó - những gì sẽ là chính xác: var s = document.createElement ('script'); s.async = 'true'; s.async = true; (google theo cách đó) hoặc s.async = 'async'; ? – Tobias

+8

@Tobias: bạn đang xen kẽ các thuộc tính boolean HTML và thuộc tính phần tử DOM tương ứng: thuộc tính HTML (có trong đánh dấu và khi đặt thuộc tính rõ ràng bằng cách sử dụng 'setAttribute', không được khuyến nghị) chỉ nên có hoặc được đặt thành chuỗi rỗng hoặc chính nó ('defer =" defer "', đặc biệt quan trọng khi viết các tài liệu tuân thủ XHTML); khi thiết lập thuộc tính của phần tử khi đang chạy bằng JavaScript, bạn nên sử dụng 's.async = true'. –

9

Từ trang tham chiếu của bạn:

http://googlecode.blogspot.com/2009/12/google-analytics-launches-asynchronous.html

Firefox 3.6 là trình duyệt đầu tiên đã chính thức cung cấp hỗ trợ cho tính năng mới này. Nếu bạn tò mò, dưới đây là thông tin chi tiết về chính thức HTML5 async specification.

+0

"tính năng mới này" đề cập đến thuộc tính async HTML5. Đoạn mã async Google Analytics được hỗ trợ bởi tất cả các trình duyệt. – Brian

60

Có hai phần của câu hỏi này, thực sự.

  1. Q: Trình duyệt nào hỗ trợ thuộc tính "async" trên thẻ tập lệnh trong đánh dấu?

    A: IE10p2 +, Chrome 11 +, Safari 5+, Firefox 3.6+

  2. Q: Những trình duyệt hỗ trợ spec mới xác định hành vi cho "async" tài sản trong JavaScript, trên một động tạo phần tử script?

    A: IE10p2 +, Chrome 12+, Safari 5.1 trở lên, Firefox 4+

Đối với Opera, họ đang rất gần với phát hành một phiên bản mà sẽ hỗ trợ cả hai loại async. Tôi đã làm việc với họ chặt chẽ về điều này, và nó sẽ đi ra sớm (tôi hy vọng!).

Thông tin thêm về lệnh-async (aka "async = false") có thể được tìm thấy ở đây: http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order

Ngoài ra, để kiểm tra xem trình duyệt hỗ trợ năng động mới async hành vi sở hữu: http://test.getify.com/test-async/

25

Một danh sách đầy đủ các phiên bản trình duyệt hỗ trợ thông số async có sẵn here

+4

Đây là câu trả lời đúng .. tiếp tục thay đổi theo thời gian. – ZeNo

1

Hiện tại, async hỗ trợ tất cả các phiên bản mới nhất của các trình duyệt chính. Nó đã được hỗ trợ cho một số năm nay trên hầu hết các trình duyệt.

Bạn có thể theo dõi trong đó trình duyệt hỗ trợ async (và trì hoãn) trong trang web MDN ở đây:
https://developer.mozilla.org/en-US/docs/HTML/Element/script

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/13069664) –

+0

@MichaelGaskill Có đủ không? Bạn có muốn tôi liên kết với câu trả lời của Philip không? – brunoais

0

Chỉ cần có một cái nhìn tại các DOM (document.scripts [1] .attributes) của trang này sử dụng google analytics. Tôi có thể cho bạn biết rằng google đang sử dụng async = "".

[type="text/javascript", async="", src="http://www.google-analytics.com/ga.js"] 
Các vấn đề liên quan