Ленивая загрузка addthis сценария? (или ленивое загружающееся внешнее js содержание, зависящее от уже запущенных событий)

Я хочу иметь addthis виджет в наличии для своих пользователей, но я хочу к ленивой загрузке его так, чтобы моя страница загрузилась как можно быстрее. Однако после попытки его через тег script и затем через мой ленивый метод загрузки, он, кажется, только работает через тег script. В запутываемом коде я вижу что-то, что похоже, это зависит от события DOMContentLoaded (по крайней мере, для Firefox).

Так как событие DOMContentLoaded уже стреляло, виджет не представляет правильно. Что сделать?

Я мог просто использовать тег script (медленнее)..., или я мог запустить (в перекрестный браузер путь) DOMContentLoaded (или эквивалентный) событие? У меня есть чувство, что это не может быть возможно, потому что я полагаю, что (как jQuery) существует несколько тестов содержания готовое событие, и таким образом, несколько моделируемых событий должны были бы иметь место.

Тем не менее, это - интересная проблема, потому что я видел, что пара виджетов теперь предполагает включение их материала через статические теги script. Было бы хорошо, если бы они написали код, который был более полезен для разработчиков, обеспокоенных скоростью, но до тех пор, вокруг существует ли работа? И/или какое-либо из моих предположений неправильно?

Править: Поскольку 1-й ответ на вопрос, казалось, упускал суть моей проблемы, я хотел разъяснить ситуацию.

Это об определенной проблеме. Я не ищу еще один ленивый сценарий загрузки или проверку, если некоторые зависимости являются загруженным сценарием. Конкретно эта проблема имеет дело с

  1. внешние виджеты, которыми Вы не управляете и можете или не могут быть запутаны
  2. задержка загрузки внешних виджетов, пока они не необходимы или по крайней мере, сезам существенно после того, как все остальное было загружено включая другие задержанные элементы
  3. b/c, как виджет был записан, устраняет существующие, типичные ленивые парадигмы загрузки

В то время как это тайно, я видел, что он происходит с парой виджетов - где разработчики виджета предполагают, что Вы просто готовы добавить другой тег script внизу страницы. Я надеюсь сохранять те 500-1000 мс **, хотя как многочисленные исследования Yahoo, Google и Amazon показывают его, чтобы быть важными для опыта Вашего пользователя.

** Мое тестирование с головкой молотка и личным опытом указывает, что это будет моими сбережениями в этом случае.

9
задан Brian Tompsett - 汤莱恩 22 August 2019 в 16:57
поделиться

2 ответа

Этот код решает проблему и экономит время загрузки, которое я искал.

После прочтения этого сообщения о том, как большинство современных библиотек js реализуют тесты для dom загруженное событие. Я потратил некоторое время на обфусцированный код и смог определить, что addthis использует комбинацию упомянутого метода doscroll, таймеров и события DOMContentLoaded для различных браузеров. Поскольку только те браузеры, которые зависят от события DOMContentloaded, в любом случае будут нуждаться в следующем коде:

if( document.createEvent ) {
 var evt = document.createEvent("MutationEvents"); 
 evt.initMutationEvent("DOMContentLoaded", true, true, document, "", "", "", 0); 
 document.dispatchEvent(evt);
}

, а остальное зависит от таймеров, проверяющих наличие определенных свойств, мне нужно было приспособить только этот один случай, чтобы иметь возможность лениво загружать это внешнее содержимое JS вместо использования статических тегов сценария, что сэкономило время, на которое я надеялся. :)

8
ответ дан 4 December 2019 в 10:05
поделиться

Изменить: если цель состоит в том, чтобы сначала загрузить другой ваш контекст, попробуйте поместить теги