2011-01-10 26 views
11

Trong khi làm việc trên thanh trượt phạm vi giao diện người dùng jQuery, tôi chủ yếu gỡ lỗi trong chrome. Tôi cần thiết để làm cho phạm vi có giới hạn vì vậy tôi sẽ lấy vị trí bên trái của một ô điều khiển như vậy:Sự khác biệt về vị trí của jQuery giữa Chrome (webkit) và Firefox

$el.css('left');

Trong đó sẽ cho tôi vị trí bên trái theo phần trăm: 84%. Tuy nhiên, khi tôi thử nghiệm trong Firefox, nó đã trả về giá trị bằng pixel.

Có ai đã từng trải nghiệm điều này trước đây không? Dựa trên việc xem xét DOM trong Firebug, Firefox không nhận ra vị trí bên trái dựa trên phần trăm nhưng dường như nó không trả về giá trị đó. Đây có phải là hành vi mặc định cho Firefox không? Điều này có giống nhau trong IE không?

+0

Câu hỏi hay. Gần đây tôi đã ngạc nhiên khi thấy css ('left') trả lại pixel trong Firefox khi thuộc tính được chỉ định là phần trăm (hoặc ems). Sau khi tất cả, bạn luôn có thể nhận được giá trị pixel bằng cách sử dụng vị trí(). Tuy nhiên, chưa từng kiểm tra trong Chrome. – harpo

+0

Ya, tôi đã ngạc nhiên khi một trong những yếu tố chỉ bắn ra khỏi màn hình khi tôi nghĩ rằng tôi về cơ bản đã được thực hiện với chức năng đó. Làm việc trên một MBP w/o VMWare hoặc tương tự, vì vậy không thể thực sự kiểm tra cho IE ngay bây giờ. – hellatan

+0

Điều này không trả lời câu hỏi của bạn, nhưng cách giải quyết dựa trên jQuery là sử dụng 'vị trí' (http://api.jquery.com/position/), trả về cùng một giá trị (bằng pixel) trên mọi trình duyệt. – Emmett

Trả lời

0

Tôi không tin rằng có bất kỳ sự khác biệt đã biết nào về việc định vị với jQuery là phiên bản mới nhất 1.4.4.

1

Các css() chức năng trả về giá trị của tài sản css quy định theo báo cáo của trình duyệt. Kết quả là, nó là trình duyệt cụ thể và không nên được sử dụng khi giao dịch với độ dài và định vị theo cách này.

+0

Tôi đồng ý, hàm css() cho phép bạn thao tác hoặc đọc các thuộc tính css và các thuộc tính đó (đáng buồn) được diễn giải khác nhau trên mỗi trình duyệt. Sử dụng hàm position() nếu bạn muốn số liệu và kết quả độc lập của trình duyệt. – Ivanhoe

0

sử dụng $el.position().left; thay :)

+0

Điều đó có thể trả lại kết quả tương tự nếu bạn không có may mắn. (tại thời điểm này đối với tôi) – Sascha

0

tôi làm việc xung quanh vấn đề này bằng cách truy cập DOM trực tiếp, như thế này:

$el.get(0).style.left

nó trả về giá trị% cho FF, Chrome, Safari và IE9. (Tuy nhiên, không thử nghiệm trên Opera)

Các vấn đề liên quan