Truyền thông truy vấn là một giải pháp tốt cho việc cung cấp phong cách thay thế cho độ rộng cửa sổ khác nhau. Thật không may, không có thuộc tính media
cho phần tử <script>
để tiến hành tương tự.
Tuy nhiên, bạn có thể cung cấp tập lệnh tải tập lệnh sẽ tải tệp mong muốn .js
tùy thuộc vào biểu định kiểu được trình duyệt chọn trên cơ sở truy vấn phương tiện của bạn. Tôi không biết làm thế nào để làm điều này một cách trực tiếp, thanh lịch nhưng có một hack tốt đẹp cho điều đó. Bạn phải "đánh dấu" mỗi .css
với một tuyên bố duy nhất (giả, không quan trọng hoặc khác nhau theo thiết kế) và kiểm tra từ bên trong JS sau khi trang đã tải để xác định biểu định kiểu nào đã được trình duyệt áp dụng.
HTML có thể trông như thế này:
<style media="handheld, screen and (max-width:1023px)">
body { margin-top: 0px }
</style>
<style media="screen and (min-width:1024px)">
body { margin-top: 1px }
</style>
Và JS kèm theo như sau:
function onLoad() {
var head = document.getElementsByTagName('head')[0];
var body = document.getElementsByTagName('body')[0];
var mark = window.getComputedStyle(body).getPropertyValue('margin-top');
var script = document.createElement('script');
script.setAttribute('src', mark=='0px' ? 'handheld.js' : 'screen.js');
head.appendChild(script);
}
này không được công việc, nhưng chỉ trên một cơ sở cho mỗi tải. Để có được phản ứng nhanh chóng để thay đổi kích thước cửa sổ trình duyệt của người dùng, bạn nên theo dõi chiều rộng của góa phụ và tải lại trang khi cần thiết.
Nguồn
2013-04-26 19:34:18
Tại sao bạn cần các tệp javascript khác nhau? Điều gì sẽ xảy ra nếu người dùng thay đổi kích thước cửa sổ? –
Tôi hầu như không nghi ngờ rằng bạn cần mã khác nhau cho các độ rộng khác nhau, làm việc tốt hơn trên logic của bạn. –
Tôi biết một cái gì đó như thế này sẽ là tuyệt vời bằng cách sử dụng các truy vấn phương tiện truyền thông. Rất nhiều yếu tố sẽ cần các js không còn tồn tại với một phong cách di động tờ. Cá nhân tôi muốn ngừng tải js hoàn toàn nếu trình duyệt giảm xuống dưới một độ rộng nhất định. –