2012-02-20 37 views
10

vấn đề này chỉ xuất hiện trong joomla -của router Lỗi Loại: Không thể đọc thuộc 'nodeName' không xác định

im cố gắng sử dụng các plugin contentflow với trang web joomla của tôi

này là trang web Plugin - http://www.jacksasylum.eu/ContentFlow/

đây là trang web của tôi - http://2-dweb.com/RND/

như bạn có thể thấy nó không làm việc - nó chỉ nằm trên giai đoạn bốc mãi mãi

khi xem xét kỹ tôi có thể thấy rằng có một vấn đề với mã này:

if (this.content.nodeName == "IMG") { 
    CFobj._imagesToLoad++; 

    var foobar = function() { 
     CFobj._imagesToLoad--; 
     this.image = this.content; 
     this.setImageFormat(this.image); 
     if (CFobj.conf.reflectionHeight > 0) { 
      this.addReflection(); 
     } 
     this.initClick(); 
     CFobj._addItemCueProcess(true); 
    }.bind(this); 

    if (this.content.complete && this.content.width > 0) 
     window.setTimeout(foobar, 100); 
    else if (this.Browser.IE && !this.content.onload) { 
     var self = this; 
     var t = window.setInterval(function() { 
      if (self.content.complete && self.content.width > 0) { 
       window.clearInterval(t); 
       foobar(); 
      } 
     }, 10); 
    } 
    else 
     this.content.onload = window.setTimeout(foobar, 100); 
} 
else { 
    this.initClick(); 
    CFobj._addItemCueProcess(true); 
} 

}; 

với dòng đầu tiên - nó nói "lỗi chưa gặp: Không thể đọc thuộc 'nodeName' không xác định"

nhưng điều này điều hoạt động trên tệp html trên máy tính để bàn của tôi và trên trang web plugin nó tự!

tại sao nó không hoạt động trên trang web Joomla của tôi? của nó không phải là một điều mâu thuẫn - im không sử dụng xung đột và tôi có plugin jquery khác mà làm việc

update:

cướp w giúp tôi với lỗi này: "Thay đổi dòng đầu tiên để if (this.content . & & this.content.nodeName == "IMG") {đó là giải quyết vấn đề"

và nó đã làm, nhưng bây giờ lỗi khác xuất hiện:

initClick: function() { 
     var cItem = this.clickItem; 
     this[this._activeElement].addEvent('click', cItem, false); 
    }, 

lỗi - Uncaught TypeError: Không thể gọi phương thức 'addEvent' của undefined

+0

Thay đổi dòng đầu tiên thành 'if (this.content && this.content.nodeName == "IMG") {'. Điều đó giải quyết vấn đề. –

+0

ok nó đã khắc phục được một vấn đề, nhưng bây giờ trên mã này có một vấn đề: initClick: function() { var cItem = this.clickItem; this [this._activeElement] .addEvent ('click', cItem, false); } có nội dung là "addEvent" không xác định " –

+0

Tìm thấy một vấn đề giống nhau khi cố gắng sử dụng với Rails (3.2.15) - áp dụng ngay cả khi sử dụng thông qua đá quý' contentflow'. –

Trả lời

9

Khi lỗi giải thích "Uncaught TypeError: Không thể đọc thuộc tính 'nodeName' của undefined" Phần tử không có sẵn khi tập lệnh cố gắng truy cập nó. Bạn có thể giải quyết vấn đề này theo hai cách.

  • Cố gắng bọc mã bằng tài liệu.đã có.
  • Bạn có thể kiểm tra xem phần tử có khả dụng hay không trước khi truy cập. Để thực hiện điều này, hãy sử dụng mệnh đề if.
+0

Tôi nghĩ rằng JS trong tập tin có thể đã được gói trong 'document.ready', nhưng tôi chắc chắn sẽ kiểm tra. –

+0

Có vẻ như không phải vậy. Tôi nghĩ rằng nó có thể là để làm với các ràng buộc nhưng điều đó dường như không có bất kỳ tác dụng. –

1

Chỉ tải tập lệnh sau khi tải tất cả các phần tử vào DOM.

Kịch bản của bạn nên được gọi là ở dưới cùng của trang như thế này

<html> 
    <head></head> 

    <body> 
    <!--HTML Elements here--> 

    <script type="text/javascript" src="yourScript.js"></script> 
    </body> 
</html> 

Nếu bạn là sử dụng jquery, bạn có thể bao gồm các tập tin kịch bản bất cứ nơi nào trong trang của bạn nếu nó được bọc trong document.ready, như này:

$(document).ready(function(){ 

    // your code here.. 

}); 
1

Điều quan trọng là bạn sử dụng class="content". Cấu trúc phải là:

<div class="ContentFlow" id="cover-menu"> 
     <div class="flow"> 
      <div class="item" > 
       <div class="content"> 
        //your stuff 
       </div> 
      </div> 
     </div> 
</div> 
Các vấn đề liên quan