2013-08-01 39 views
13

Vì vậy, tôi đã có một vấn đề lạ mà tôi dường như không thể tìm thấy ở bất kỳ nơi nào khác, liên quan đến masonry.js.Không tải được Masonry.js. Không thể gọi 'tạo' không xác định (Outerlayer) trong Wordpress

Tôi đã có the latest (3.10) version và tôi bao gồm nó trong tập tin functions.php theme wordpress của tôi như vậy:

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'); 

Đó là tải tốt kịch bản. Như bây giờ, tôi sẽ không làm bất cứ điều gì khác với nó, nhưng kịch bản là không:

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

Có vẻ như nó không thể gọi tạo trên window.Outerlayer như nó không tồn tại.

Dưới đây là mã trong câu hỏi, bắt đầu từ dòng 34 từ 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; 
    }; 

Tôi đã thử enqueueing kịch bản theo nhiều cách khác nhau, cũng như kéo nó vào chỉ khi $ (document) .ready() (mà tôi tin rằng wordpress 'enqueue_script nào không?).

Vì vậy, có ai có bất kỳ ý tưởng nào về vấn đề hoặc xung đột có thể ở đây không? Hay có ai có kinh nghiệm gì tương tự?

(Tôi đang sử dụng jQuery 1.83, mặc dù nề không được yêu cầu jquery theo trang web.)

+0

Tôi gặp vấn đề tương tự - bạn đã bao giờ giải quyết vấn đề chưa? – timshutes

+0

@timshutes Ngay bây giờ thực sự, nó xuất hiện để làm việc nếu bạn bao gồm cả các kịch bản và mã để thực hiện nó trong một mẫu trực tiếp, tức là: không phải với wordpress enqueue_script. Tôi sẽ xem xét thêm một chút nữa và xem liệu tôi có thể tìm ra * tại sao * điều này có hiệu quả không. Nhưng hãy thử ngay bây giờ. – josh

+0

Tôi chơi với điều này mãi mãi. Có một cuộc gọi trên dòng 37 ở đó (nơi bạn nhận được lỗi) đến một hàm từ một thư viện khác. Tôi sẽ đăng một câu trả lời đầy đủ và xem nếu điều này sẽ giúp. – timshutes

Trả lời

32

Tôi gặp vấn đề chính xác này. Tôi đoán là bạn chỉ đang sử dụng tệp masonry.js thô từ github. Phiên bản xây này yêu cầu một vài plugin khác hoạt động chính xác.

Cụ thể, bạn nhận được lỗi này vì bạn chưa cài đặt Outlayer. Nếu bạn đang tìm cách để xây dựng và chạy, bạn nên lấy gói sản xuất đầy đủ từ masonry website here. Nó bao gồm các plugin cần thiết.

Hy vọng điều này sẽ hữu ích!

+1

rằng * là * những gì đang diễn ra. THANKS – josh

+0

Vâng, cũng vậy với tôi. Cảm ơn! – Astrotim