Masonry.js schlägt beim Laden fehl. Kann ‘create’ von undefined (Outerlayer) in WordPress nicht aufrufen

Lesezeit: 2 Minuten

Benutzeravatar von Josh
Josch

Ich habe also ein seltsames Problem, das ich anscheinend nirgendwo anders finden kann, in Bezug auf masonry.js.

ich habe die neueste (3.10) Version und ich füge es wie folgt in die Datei functions.php meines WordPress-Themes ein:

function enqueue ()
{
    wp_register_script( 'masonry', get_stylesheet_directory_uri() . '/js/masonry.js', array( 'jquery' ) );
    wp_enqueue_script( 'masonry' );
}

add_action( 'wp_enqueue_scripts', 'enqueue');

Was das Skript gut lädt. So wie es jetzt ist, mache ich es nicht irgendetwas sonst damit, aber das Skript schlägt fehl:

Uncaught TypeError: Cannot call method 'create' of undefined masonry.js?ver=3.5.2:37

Scheint, als könne es create auf dem window.Outerlayer nicht aufrufen, da es nicht existiert.

Hier ist der fragliche Code, beginnend bei Zeile 34 aus der masonry.js:

// used for AMD definition and requires
function masonryDefinition( Outlayer, getSize ) {
  // create an Outlayer layout class
  var Masonry = Outlayer.create('masonry');

  Masonry.prototype._resetLayout = function() {
    this.getSize();
    this._getMeasurement( 'columnWidth', 'outerWidth' );
    this._getMeasurement( 'gutter', 'outerWidth' );
    this.measureColumns();

    // reset column Y
    var i = this.cols;
    this.colYs = [];
    while (i--) {
      this.colYs.push( 0 );
    }

    this.maxY = 0;
  };

Ich habe versucht, das Skript auf verschiedene Arten in die Warteschlange einzureihen und es nur dann einzufügen, wenn $(document).ready() (was meiner Meinung nach das enqueue_script von WordPress sowieso tut?).

Hat jemand eine Idee, was hier das Problem oder der Konflikt sein könnte? Oder hat jemand ähnliches erlebt?

(Ich verwende jQuery 1.83, obwohl Mauerwerk laut Website kein jquery erfordern sollte.)

  • Ich habe das gleiche Problem – hast du es jemals gelöst bekommen?

    – Timshut

    13. August 2013 um 5:16 Uhr

  • @timshutes Gerade jetzt scheint es zu funktionieren, wenn Sie sowohl das Skript als auch den Code zum Ausführen direkt in eine Vorlage einfügen, dh: nicht mit WordPress enqueue_script. Ich werde das ein bisschen weiter untersuchen und sehen, ob ich es herausfinden kann warum das funktioniert. Aber probiere das jetzt mal aus.

    – Josch

    15. August 2013 um 10:16 Uhr

  • Damit habe ich ewig gespielt. Dort gibt es in Zeile 37 (wo Sie den Fehler erhalten) einen Aufruf zu einer Funktion aus einer anderen Bibliothek. Ich werde eine vollständige Antwort posten und sehen, ob dies hilft.

    – Timshut

    15. August 2013 um 20:36 Uhr

Ich hatte genau dieses Problem. Ich vermute, dass Sie nur die rohe masonry.js-Datei von github verwenden. Diese Version von Masonry benötigt einige andere Plugins, um korrekt zu funktionieren.

Insbesondere erhalten Sie diesen Fehler, weil Sie dies nicht getan haben Ausreißer Eingerichtet. Wenn Sie nur das Mauerwerk zum Laufen bringen möchten, sollten Sie sich das vollständige Produktionspaket aus dem holen Mauerwerk-Website hier. Es enthält die notwendigen Plugins.

Hoffe das hilft!

  • das ist was ist passiert. DANKE

    – Josch

    16. August 2013 um 9:14 Uhr

  • Ja, das gleiche bei mir auch. Vielen Dank!

    – Astrotim

    7. November 2013 um 12:16 Uhr

1401510cookie-checkMasonry.js schlägt beim Laden fehl. Kann ‘create’ von undefined (Outerlayer) in WordPress nicht aufrufen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy