เบราว์เซอร์ใดที่รองรับ <script async =“ async” />


196

เมื่อวันที่ 1 ธันวาคม 2009 Google ประกาศการสนับสนุนสำหรับตรงกันติดตามของ Google Analytics

การติดตามแบบอะซิงโครนัสทำได้โดยใช้คำสั่ง async สำหรับ<script>แท็ก

เบราว์เซอร์ใดที่สนับสนุนคำสั่ง async ( <script async="async" />) และตั้งแต่เวอร์ชันใด


1
มันอยู่ในหน้านั้นที่คุณเชื่อมโยงกับ: "Firefox 3.6 เป็นเบราว์เซอร์แรกที่ให้การสนับสนุนอย่างเป็นทางการสำหรับฟีเจอร์ใหม่นี้" FWIW เป็นฟีเจอร์ HTML5 ซึ่งกำลังได้รับการสนับสนุนที่ดีและรวดเร็วยิ่งขึ้น
Crescent Fresh

51
ข้อมูลจำเพาะ HTML5 บอกว่า async = "true" ผิดกฎหมาย ในฐานะที่เป็นแอตทริบิวต์บูลีน HTML สถานะของแอตทริบิวต์จะระบุว่า "เป็นจริง" ในขณะที่ไม่มีแอตทริบิวต์เท่ากับ "เท็จ" หากมีแอตทริบิวต์ค่าที่ใช้ได้สำหรับแอตทริบิวต์นั้นคือ "" และ "async"
Joel Mueller

นี่คือการทดสอบการถ่ายทอดสดของแอตทริบิวต์นี้html5demo.braincracking.org/demo/async.php

3
นี่ควรเป็นบุ๊กมาร์กเพื่อตรวจสอบบ่อยครั้งสำหรับทุกคนที่สนใจในปัญหานี้: en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5%29
pumpkinthehead

คำตอบ:


162

การสนับสนุน async ตามที่ Google ระบุทำได้โดยใช้สองส่วนดังนี้

  • การใช้สคริปต์บนหน้าของคุณ (สคริปต์จัดทำโดย google) เพื่อเขียนแท็ก <script> ไปยัง DOM

  • สคริปต์นั้นมี async = "true" เพื่อส่งสัญญาณไปยังเบราว์เซอร์ที่ใช้งานร่วมกันได้ซึ่งจะสามารถแสดงหน้าต่อไปได้

ส่วนแรกทำงานบนเบราว์เซอร์ที่ไม่มีการสนับสนุน<script async..แท็กทำให้พวกเขาโหลด async ด้วย "แฮ็ค" (แม้ว่าจะค่อนข้างแข็งแกร่ง) และยังอนุญาตให้แสดงผลหน้าเว็บโดยไม่ต้องรอ ga.js ที่จะเรียกคืน

ส่วนที่สองมีผลกับเบราว์เซอร์ที่ใช้งานร่วมกันได้เท่านั้นซึ่งเข้าใจแอตทริบิวต์ async html

  • FF 3.6+
  • FF สำหรับ Android ทุกรุ่น
  • IE 10+ (เริ่มต้นด้วยหน้าตัวอย่าง 2)
  • Chrome 8+
  • Chrome สำหรับ Android ทุกรุ่น
  • Safari 5.0+
  • iOS Safari 5.0+
  • เบราว์เซอร์ Android 3.0+ (ขึ้นไปบนรังผึ้ง)
  • Opera 15.0+
  • Opera Mobile 16.0+
  • Opera Mini None (ลงทะเบียน 8.0)

วิธี "HTML5 ที่เหมาะสม" เพื่อระบุ async อยู่กับ ที่ไม่ได้<script async src="..." <script async="true"อย่างไรก็ตามเบราว์เซอร์เริ่มแรกไม่สนับสนุนไวยากรณ์นี้และไม่สนับสนุนการตั้งค่าคุณสมบัติสคริปต์ในองค์ประกอบที่อ้างอิง หากคุณต้องการสิ่งนี้รายการเปลี่ยนแปลง:

  • FF 4+
  • IE 10+ (ดูตัวอย่าง 2 และสูงกว่า)
  • Chrome 12+
  • Chrome สำหรับ Android 32+
  • Safari 5.1+
  • ไม่มีรุ่น Android

34
ฉันไม่แน่ใจว่าคุณจำเป็นต้องใช้ async = "true" คุณสามารถเขียน 'async' ได้
vsync

4
ดังนั้นถ้าฉันสร้างแท็กสคริปต์เช่น google ทำมัน - สิ่งที่จะถูกต้อง: var s = document.createElement ('สคริปต์'); s.async = 'ความจริง'; s.async = true; (google ทำเช่นนั้น) หรือ s.async = 'async'; ?
Toby

8
@Tobias: คุณกำลังผสานแอตทริบิวต์บูลีน HTML และคุณสมบัติองค์ประกอบ DOM ที่สอดคล้องกัน: แอตทริบิวต์ HTML (แสดงในมาร์กอัปและเมื่อตั้งค่าคุณลักษณะอย่างชัดเจนโดยใช้setAttributeซึ่งไม่แนะนำให้ใช้) ควรมีอยู่หรือตั้งเป็นสตริงว่างหรือตัวเอง ( defer="defer"สำคัญอย่างยิ่งเมื่อเขียนเอกสารที่สอดคล้องกับ XHTML) เมื่อตั้งค่าคุณสมบัติขององค์ประกอบ on-the-fly การใช้ JavaScript s.async = trueหนึ่งควรใช้
Marcel Korpel

39
@vsync: มันไม่ควรเป็นtrueเช่นนั้น อย่างใดอย่างหนึ่งasync, หรือasync="" async="async"
Marcel Korpel

4
async="true"โปรดทราบว่าการโพสต์ที่เชื่อมโยงในชุดคำถาม มันไม่ได้เป็นวิธีที่ถูกต้องที่จะทำในขณะนี้แต่มันก็เป็นวิธีที่ได้รับการสนับสนุนอย่างกว้างขวางเดียวที่จะทำมันแล้ว ตัวอย่างเช่นรองรับ IE10p2 async="true"แต่ไม่รองรับasync="async"
Philip Rieck

60

คำถามนี้มีสองส่วนจริงๆ

  1. ถาม: เบราว์เซอร์ใดที่สนับสนุนแอตทริบิวต์ "async" บนแท็กสคริปต์ในมาร์กอัพ

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

  2. ถาม: เบราว์เซอร์ใดที่สนับสนุนข้อกำหนดใหม่ที่กำหนดลักษณะการทำงานสำหรับคุณสมบัติ "async" ใน JavaScript บนองค์ประกอบสคริปต์ที่สร้างขึ้นแบบไดนามิก

    A: IE10p2 +, Chrome 12+, Safari 5.1+, Firefox 4+

ส่วน Opera นั้นใกล้เคียงกับการปล่อยเวอร์ชั่นซึ่งรองรับ async ทั้งสองประเภท ฉันได้ทำงานกับพวกเขาอย่างใกล้ชิดและมันจะออกมาเร็ว ๆ นี้ (ฉันหวังว่า!)

ข้อมูลเพิ่มเติมเกี่ยวกับ Order-async (aka, "async = false") สามารถดูได้ที่นี่: http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order

นอกจากนี้เพื่อทดสอบว่าเบราว์เซอร์รองรับคุณสมบัติการซิงค์แบบไดนามิกใหม่: http://test.getify.com/test-async/



10

จากหน้าอ้างอิงของคุณ:

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

Firefox 3.6 เป็นเบราว์เซอร์แรกที่ให้การสนับสนุนคุณสมบัติใหม่นี้อย่างเป็นทางการ ถ้าคุณอยากรู้นี่คือรายละเอียดเพิ่มเติมเกี่ยวกับการอย่างเป็นทางการข้อกำหนด HTML5 async


"คุณสมบัติใหม่นี้" อ้างถึงคุณลักษณะ async HTML5 ตัวอย่างข้อมูล async ของ Google Analytics รองรับทุกเบราว์เซอร์
Brian

1

asyncปัจจุบันสนับสนุนโดยทุกรุ่นล่าสุดของเบราว์เซอร์ที่สำคัญ มันได้รับการสนับสนุนมานานหลายปีแล้วในเบราว์เซอร์ส่วนใหญ่

คุณสามารถติดตามว่าเบราว์เซอร์ใดรองรับ async (และเลื่อน) ในเว็บไซต์ MDN ที่นี่:
https://developer.mozilla.org/en-US/docs/HTML/Element/script


แม้ว่าลิงก์นี้อาจตอบคำถามได้ดีกว่าหากรวมส่วนสำคัญของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิง คำตอบสำหรับลิงก์เท่านั้นอาจไม่ถูกต้องหากหน้าเว็บที่เชื่อมโยงมีการเปลี่ยนแปลง - จากการรีวิว
Michael Gaskill

@MichaelGaskill เพียงพอหรือไม่ คุณต้องการให้ฉันเชื่อมโยงกับคำตอบของฟิลิปหรือไม่?
brunoais

0

เพิ่งดูที่ DOM (document.scripts [1] .attribute) ของหน้านี้ที่ใช้ Google Analytics ฉันสามารถบอกคุณได้ว่า google กำลังใช้ async = ""

[type="text/javascript", async="", src="http://www.google-analytics.com/ga.js"]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.