Дублирующие теги сценария вызывают несколько запусков?

Если у меня есть несколько <script> теги, указывающие на один и тот же ресурс Javascript, запускается ли браузер один раз для каждого <script> тег? Или браузер дедуплицирует?

Что происходит в этом случае?

<script src="example.js"></script>
<script src="example.js"></script>

1 ответ

example.jsзапускается каждый раз, когда на него ссылается тег script. Браузер не пытается его дублировать. (Однако он может запросить его только один раз с сервера.)

Это верно даже при async а также defer атрибутов.


Если по какой-то причине вы хотите поддерживать дублирующиеся теги сценариев, которые приводят к тому, что код запускается только один раз, вы можете использовать технику, аналогичную включению охранников для Си.

Например, example.js может содержать:

if (window.example === undefined) {
  window.example = {
    publicFunction: function publicFunction() {
       // ...
    },
    // ...
  };
}
Другие вопросы по тегам