2009-03-03 19 views
21

Thông thường, nếu bạn cần phải thiết lập một thuộc tính style trong JavaScript, bạn nói điều gì đó như:Có cách trình duyệt chéo để thiết lập style.float trong Javascript không?

element.style.attribute = "value"; 

Có thay đổi nhỏ nhưng thường là tên thuộc tính là một tương tự, mặc dù camelcased, phiên bản của HTML tên thuộc tính.

Vấn đề đối với tôi là thuộc tính float không hoạt động. Float là một từ khóa trong JavaScript và do đó style.float làm cho tất cả các JavaScript cho ngắt trang. Tôi nhìn vào MSDN, và nó nói để sử dụng styleFloat như vậy:

element.style.styleFloat = "value"; 

Điều đó chỉ hoạt động trong IE. Firefox, Safari, Chrome, Opera - không ai trong số họ dường như có câu trả lời. Tôi làm sai ở đâu? Phải có một câu trả lời đơn giản cho điều này.

Trả lời

35

Sử dụng cssFloat như trong ...

element.style.cssFloat = "value"; 

đó làm việc trong tất cả mọi thứ trừ IE 8 trở lên, nhưng bạn luôn có thể phát hiện các trình duyệt và chuyển đổi, hoặc chỉ cần thiết cho cả hai. Không may, không có cách nào để thiết lập chỉ một giá trị kiểu để làm việc trong tất cả các trình duyệt.

Vì vậy, để tóm tắt, tất cả mọi người bạn cần phải thiết lập các phao, chỉ cần nói:

element.style.styleFloat = "value"; 
element.style.cssFloat = "value"; 

Đó nên làm việc ở khắp mọi nơi.

+1

Tại sao không 'element.style [ 'phao'] = "giá trị"; ' ? Không có hạn chế về các ký tự bạn có thể sử dụng trong một đối tượng javascript. – doug65536

+0

Liên kết MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/float – Basilevs

0

tốt hơn:

element.style.styleFloat = element.style.cssFloat = "value"; 
+1

Bạn có thể mở rộng cách hoạt động của giải pháp này để giải quyết câu hỏi không? –

0

Đây là một cách tiếp cận chức năng sniff:

if (typeof elmt.style.cssFloat != "undefined") 
    elmt.style.cssFloat = "none"; 
else 
    elmt.style.styleFloat = "none"; 

Nhưng thông thường chúng ta không cần phải bận tâm với phát hiện này. Tôi đã thử nghiệm cách tiếp cận user2719099 với Chrome như sau:

 elmt.style.cssFloat = elmt.style.styleFloat = "none"; 
     console.log(elmt.style.cssFloat, elmt.style.styleFloat); 

Và kết quả là khá tốt trong giao diện điều khiển:

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