Storybook: @ storybook / html 5.0.1 kann beim Laden von Storys keine Skripte ausführen, auch bekannt als "DOMContentLoaded"

Erstellt am 15. März 2019  ·  6Kommentare  ·  Quelle: storybookjs/storybook

Hallo Leute! Hier ist meine Situation: Einige meiner Komponenten erfordern Javascript. Ich kann die Javascript-Datei erfolgreich in preview-head.html aufrufen, aber das Initialisieren ist ein Problem.

Vor v5.0.1 hatte ich:

document.addEventListener("DOMContentLoaded", function(event) {
        /* The stuff I needed to initialise */
    }, false);

und es hat funktioniert, aber jetzt nicht.

Ich habe Ihre Dokumente und Stackoverflow selbst durchgesehen, aber ich kann keine Lösung dafür finden. Es fühlt sich so an, als ob es etwas sein sollte, das Storybook berücksichtigen sollte.

Jede Hilfe wäre dankbar.

core has workaround question / support

Hilfreichster Kommentar

@ BennyZ28 was war die Lösung?

Die Problemumgehung ist zu komplex. Warum bietet das Storybook nicht einen Rückruf, der nur aufgerufen wird, nachdem die Story zum Dom-Baum hinzugefügt wurde?

Alle 6 Kommentare

Egal, gelöst

@ BennyZ28 was war die Lösung?

@shilman Eigentlich habe ich es nicht gelöst, obwohl ich es nach zu vielen Stunden vor dem Bildschirm hatte, aber ich habe mich geirrt.

Also, jede Hilfe noch geschätzt!

Immer wenn sich die 'Seite' ändert, wird das alte div#root -Element im iframe entfernt und ein neues hinzugefügt. Sie können diese Funktion verwenden und mit MutationObserver kombinieren, um

In Ihrem preview-head.html können Sie hinzufügen:

function runOnInit() {
  console.log('Init')
}
function runOnPageChange() {
  console.log('Page has changed!')
}
document.addEventListener('DOMContentLoaded', function() {
  runOnInit();
  const callback = function(mutationsList) {
    for (let i = 0, len = mutationsList.length; i < len; i++) {
      if (mutationsList[i].type == 'childList') {
        runOnPageChange();
        break;
      }
    }
  };

  const observer = new MutationObserver(callback);
  const config = { childList: true, subtree: false };
  observer.observe(document.getElementById('root'), config);
}, false);

Informationen zur Funktionsweise von MutationObserver finden Sie in der MDN-Dokumentation .

🙏

@ BennyZ28 was war die Lösung?

Die Problemumgehung ist zu komplex. Warum bietet das Storybook nicht einen Rückruf, der nur aufgerufen wird, nachdem die Story zum Dom-Baum hinzugefügt wurde?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen