Vì vậy, tôi cần phải biết chiều rộng của một phần tử với javascript, vấn đề tôi có là chức năng cháy quá sớm và chiều rộng thay đổi khi css được tottally áp dụng. Như tôi đã hiểu, hàm $ (document) .ready() đã được kích hoạt khi tài liệu được hoàn thành, nhưng nó dường như không hoạt động như thế.
Anyways, tôi chắc chắn rằng với mã vấn đề của tôi sẽ được hiểu (điều này là một ví dụ đơn giản):
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<link href='http://fonts.googleapis.com/css?family=Parisienne' rel='stylesheet' type='text/css'>
<style type="text/css">
#target {
font-family: 'Parisienne', cursive;
float: left;
}
</style>
</head>
<body>
<div id="target">Element</div>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(){
console.debug($('#target').outerWidth());
alert('hold on');
console.debug($('#target').outerWidth());
});
</script>
Tôi muốn biết chiều rộng của div #target, vấn đề là mã được thực hiện trước khi cảnh báo đưa ra một kết quả khác với kết quả sau, có lẽ vì phông chữ không được tải đầy đủ và nó đo div với phông chữ mặc định.
Nó hoạt động như tôi mong đợi trong Google Chrome, nhưng nó không có trên IE và Firefox.
Tôi có thể khẳng định 2013/11/24 rằng vấn đề này vẫn còn tồn tại trên JQuery 2.x khi bạn nhấn nút refresh của trình duyệt. Truy cập [fiddle] này (http://jsfiddle.net/jLDbX/). Khi bạn lần đầu tiên tải fiddle, mọi thứ sẽ hoạt động tốt cho hầu hết các lần. Nó cũng hoạt động nếu bạn đặt con trỏ chuột vào URL và nhấn enter. Nhưng mọi thứ sẽ đi vào địa ngục nếu bạn nhấp vào nút làm mới hoặc nhấn * CTRL + R *. –
Tôi đã cố gắng thực hiện một chốt "đếm ngược" để đo chiều rộng và chiều cao chỉ khi cả hai cửa sổ tải bắn và khi phông chữ phụ thuộc đã hoàn thành cháy. Xem liệu nó có giúp ích không: [http://jsfiddle.net/jLDbX/1/](http://jsfiddle.net/jLDbX/1/). Trong câu chuyện này, mọi thứ dường như đang hoạt động tốt. Nhưng trong ứng dụng thế giới thực của tôi, tôi vẫn gặp lỗi. Đối với bạn mặc dù, nó có thể làm việc. –