# decorateCookedElement für jeden Seitenwechsel?

**URL:** <https://meta.discourse.org/t/decoratecookedelement-for-each-page-change/214218>\
**Category:** Development\
**Created:** [8. Januar 2022 um 04:54 UTC](https://meta.discourse.org/t/decoratecookedelement-for-each-page-change/214218 "2022-01-08T04:54:17Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![Johani](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johani/32/176920_2.png) [@Johani](https://meta.discourse.org/u/Johani)\
**Post date:** [11. Januar 2022 um 22:09 UTC](https://meta.discourse.org/t/decoratecookedelement-for-each-page-change/214218/5 "2022-01-11T22:09:06Z")

</div>

Ihr Code sollte einwandfrei funktionieren. Sie sind gerade auf einen Fehler in Discourse gestoßen.

`loadScript()` setzt das `async`-Attribut für die von ihm geladenen Skripte nicht. Daher ist es standardmäßig `async="true"`, was Ihre Ladeordnung durcheinanderbringt. Das ist eine Eigenart des Browsers. Sie müssen `async="false"` für mit JS geladene Skripte erzwingen.

Plugins sind kleiner, daher laden sie schneller als das Hauptpaket, aber da sie `async` sind, respektieren sie die Ladeordnung nicht mehr – sie warten, bis das Hauptpaket geladen und ausgeführt wurde, bevor sie selbst ausgeführt werden.

Das ist wahrscheinlich unbemerkt geblieben, weil `loadScript` meines Wissens nirgendwo im Kern verschachtelt ist. Normalerweise würden Sie Dateien bündeln, die zusammenarbeiten müssen. Um Ihre andere Frage zu beantworten: Nein, es gibt keine Discourse-Funktionen, die diese Art von Dingen handhaben.

Ihr anderer Snippet sollte ebenfalls funktionieren. Um ihn etwas leichter lesbar zu machen, versuchen Sie vielleicht, sie zu verketten, anstatt sie zu verschachteln.

```javascript
// Dies kommt außerhalb des Decorators
const PLUGINS = {
  speed: "https://example.com/foo.js",
  skipBack: "https://example.com/bar.js",
  jumpForward: "https://example.com/baz.js"
};

// Dann erledigen Sie Ihre Arbeit innerhalb des Decorators
loadScript(MEDIA_ELEMENT_SRC)
  .then(() => loadScript(PLUGINS.speed))
  .then(() => loadScript(PLUGINS.skipBack))
  .then(() => loadScript(PLUGINS.jumpForward))
  .then(() => {
    audioplayers.forEach(function (el) {
      new MediaElementPlayer(el, MEDIA_ELEMENT_CONFIG);
    });
  });

```

---

_[View the full topic](https://meta.discourse.org/t/decoratecookedelement-for-each-page-change/214218)._
