Які браузери підтримують <скрипт async = «async» />?


196

1 грудня 2009 року Google оголосила про підтримку асинхронного відстеження Google Analytics .

Асинхронне відстеження досягається за допомогою директиви async для <script>тегу.

Які браузери підтримують директиву async ( <script async="async" />) і з якої версії?


1
Саме на цій сторінці, на яку ви пов’язані: "Firefox 3.6 - це перший браузер, який офіційно запропонував підтримку цієї нової функції". FWIW - це функція HTML5, яка швидко отримує все кращу і кращу підтримку.
Півмісяць Свіжий

51
Специфікація HTML5 говорить, що async = "true" є незаконним. Як булевий атрибут HTML, наявність атрибута вказує на "істинне", тоді як відсутність атрибута дорівнює "хибному". Якщо атрибут присутній, єдиними допустимими значеннями для атрибута є "" та "async".
Джоель Мюллер

Ось живий тест цього атрибута html5demo.braincracking.org/demo/async.php .

3
Це має бути закладкою, щоб часто перевіряти всіх, хто цікавиться цією проблемою: en.wikipedia.org/wiki/Comppare_of_layout_engines_%28HTML5%29
pumpkinthehead

Відповіді:


162

Підтримка асинхронізації, визначена google, досягається за допомогою двох частин:

  • використовуючи скрипт на своїй сторінці (сценарій надається google), щоб написати тег <script> в DOM.

  • цей скрипт має атрибут async = "true", щоб сигналізувати сумісним браузерам, що він може продовжувати візуалізацію сторінки.

Перша частина працює в браузерах без підтримки <script async..тегів, що дозволяє завантажувати асинхронізацію з "хаком" (хоча і досить солідним), а також дозволяє відтворювати сторінку, не чекаючи завантаження ga.js.

Друга частина стосується лише сумісних веб-переглядачів, які розуміють атрибут hty асинхронізації

  • FF 3.6+
  • FF для Android усіх версій
  • IE 10+ (починаючи з попереднього перегляду 2)
  • Chrome 8+
  • Chrome для Android Усі версії
  • Сафарі 5.0+
  • iOS Safari 5.0+
  • Android Browser 3.0+ (нові соти)
  • Opera 15.0+
  • Opera Mobile 16.0+
  • Opera Mini None (станом на 8,0)

"Правильний html5" спосіб вказати асинхронізацію - з <script async src="...", не <script async="true". Однак спочатку браузери не підтримували цей синтаксис, а також не встановлювали властивість скрипту на посилаються елементи. Якщо ви цього хочете, список змінюється:

  • FF 4+
  • IE 10+ (попередній перегляд 2 і вище)
  • Chrome 12+
  • Chrome для Android 32+
  • Сафарі 5.1+
  • Немає версій для Android

34
Я не впевнений, що вам навіть потрібен async = "true", ви можете просто написати "async"
vsync

4
тому якщо я генерую тег сценарію, як Google це робить - що було б правильно: var s = document.createElement ('script'); s.async = 'правда'; s.async = правда; (google робить це так) або s.async = 'async'; ?
Тобі

8
@Tobias: ви переплітаєте HTML-булеві атрибути HTML та відповідні властивості елемента DOM: атрибут HTML (присутній у розмітці та при явній настройці атрибутів із використанням setAttribute, що не рекомендується) повинен просто бути присутнім або встановлюватися в порожній рядок або сам ( defer="defer"особливо важливо при написанні документів, сумісних з XHTML); під час встановлення властивості елемента на льоту за допомогою JavaScript, слід використовувати s.async = true.
Марсель Корпель

39
@vsync: Це навіть не повинно бути true; або async, async=""або async="async".
Марсель Корпель

4
Зверніть увагу, що публікація пов'язана у наборах питань async="true". Це не правильний спосіб зробити це зараз , але це був єдиний широко підтримуваний спосіб зробити це тоді . Наприклад, IE10p2 підтримував, async="true"але не підтримувавasync="async"
Філіп Рік

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, вони дуже близькі до випуску версії, яка підтримуватиме обидва типи асинхронізації. Я з ними тісно співпрацював над цим, і це має вийти незабаром (сподіваюся!).

Більше інформації про order-async (він же "async = false") можна знайти тут: http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order

Також перевірити, чи підтримує веб-переглядач нову динамічну поведінку властивості асинхронизації: http://test.getify.com/test-async/


25

Повний список версій браузерів , що підтримують asyncпараметр доступний тут


10

З вашої посилається сторінки:

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

Firefox 3.6 - це перший браузер, який офіційно запропонував підтримку цієї нової функції. Якщо вам цікаво, ось докладніші відомості про офіційну специфікацію async HTML5 .


"ця нова функція" посилається на атрибут асинхроніки HTML5. Фрагмент асинхронізації Google Analytics підтримується всіма браузерами.
Брайан

1

asyncВ даний час підтримується всіма останніми версіями основних браузерів. Він підтримується вже кілька років у більшості браузерів.

Ви можете відслідковувати, які браузери підтримують асинхронізацію (і відкладати) на веб-сайті MDN тут:
https://developer.mozilla.org/en-US/docs/HTML/Element/script


Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
Майкл Гаскілл

@MichaelGaskill Цього достатньо? Ви хочете, щоб я посилався на відповідь Філіпа?
бруноа

0

Просто подивився DOM (document.scripts [1] .attributes) цієї сторінки, що використовує Google Analytics. Я можу вам сказати, що Google використовує async = "".

[type="text/javascript", async="", src="http://www.google-analytics.com/ga.js"]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.