2014-04-15 13 views
5

Câu hỏi jQuery BBQ noob: Tôi đã tải xuống jQuery BBQ 1.2.1 và tôi đang cố gắng sử dụng nó với jQuery 2.1.0. BBQ hoạt động theo ý nghĩa rằng nó làm những gì tôi muốn nó làm, nhưng tôi đã nhận thấy một thông báo lỗi trong giao diện điều khiển. Tôi đã theo dõi nó xuống đến những gì dường như là một vấn đề tương thích. Đây là trang HTML mẫu sản xuất lỗi:jQuery BBQ tạo lỗi với jQuery 2

<!DOCTYPE HTML> 
<html> 
    <head> 
     <title>example</title> 
    </head> 
    <body> 
     example 
    </body> 
    <script src="../js/lib/jquery-2.1.0.min.js"></script> 
    <script src="../js/lib/jquery.ba-bbq.min.js"></script> 
</html> 

Trong Firefox lỗi console là TypeError: f is undefined. Trong Chrome, lỗi này khác: Uncaught TypeError: Cannot read property 'msie' of undefined.

Tôi đã nhận thấy jQuery BBQ khá cũ. Có một bản rev mới hơn của jQuery BBQ không? Hoặc là có một số thư viện thay thế mới hơn?

CẬP NHẬT

Tôi đang sử dụng jQuery BBQ vì một tìm kiếm google gửi cho tôi cho câu hỏi đã trả lời trước đây này: Parsing URL hash/fragment identifier with JavaScript. Vấn đề thực sự tôi đang cố gắng giải quyết giống với câu hỏi được liên kết: để trả lời các thay đổi trong phần băm của URI và phân tích cú pháp đoạn đó.

Nó chỉ ra rằng mục đích của tôi (cho đến nay), tôi có thể loại bỏ jQuery BBQ và viết một vài dòng mã để lấy các chuỗi hash (và loại bỏ các dấu băm):

$(window).bind('hashchange', function() { 
     var hashString = window.location.hash || ''; 
     hashString = hashString.replace("#",''); 
     myEventHandler(hashString); 
    }); 

Vì vậy, sẽ hoạt động ngay bây giờ. Nó khá đơn giản và nó phụ thuộc ít hơn một mô-đun, vì vậy giành chiến thắng-thắng. Tôi cho rằng đó là lý do tại sao không có câu trả lời cho một câu hỏi jQuery-BBQ, eh?

+0

thể trùng lặp của [lỗi browser.msie sau khi cập nhật lên jQuery 1.9.1] (http://stackoverflow.com/questions/14892095/browser-msie-error-after-update-to-jquery-1-9-1) – Phil

+1

Tôi kính trọng không đồng ý. Nó sẽ là một bản sao nếu câu hỏi đã được hỏi bởi người bảo trì jQuery-BBQ - và dường như không có một. Và trong khi chắp vá tay một thành phần bên thứ 3 không phải là tắt bảng, nó đơn giản hơn nhiều không sử dụng jQuery-BBQ và thay vào đó sử dụng 'window.location.hash'. –

Trả lời

3

Tôi rất vui vì sự cố của bạn đã được giải quyết (1 năm trước!). Nhưng đối với bất kỳ ai khác có vấn đề này:

Như bạn có thể đã thấy trong số this answer vấn đề này là do $ .browser không được dùng trong phiên bản 1.3 và bị loại bỏ trong 1.9.

nhưng bạn có thể khắc phục điều đó khá đơn giản. chỉ cần mở nguồn bbq jquery và tìm kiếm f.msie (được sử dụng như h = f.msie) và thay thế bằng:

(navigator.appName == 'Microsoft Internet Explorer') ? true : false 

(bây giờ bạn phải có h = (navigator.appName == 'Microsoft Internet Explorer') ? true : false)

0

Cú pháp mà làm việc đối với tôi là :

h = (navigator.appName == 'Microsoft Internet Explorer' ? true : false) 

hoặc nếu được sử dụng như một phần của "nếu" công tắc ...

(h = (navigator.appName == 'Microsoft Internet Explorer' ? true : false))