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