คุณสามารถใช้ $ (หน้าต่าง). resize () เพื่อตรวจสอบว่า viewport ถูกปรับขนาด
jQuery ไม่มีฟังก์ชั่นใด ๆ ในการตรวจสอบความกว้างและความสูงอย่างถูกต้องของวิวพอร์ต [1] เมื่อมีแถบเลื่อนอยู่
ฉันพบวิธีแก้ปัญหาที่ใช้ไลบรารี Modernizr และเฉพาะฟังก์ชั่น mq ซึ่งเปิดการสืบค้นสื่อสำหรับจาวาสคริปต์
นี่คือทางออกของฉัน:
// A function for detecting the viewport minimum width.
// You could use a similar function for minimum height if you wish.
var min_width;
if (Modernizr.mq('(min-width: 0px)')) {
// Browsers that support media queries
min_width = function (width) {
return Modernizr.mq('(min-width: ' + width + ')');
};
}
else {
// Fallback for browsers that does not support media queries
min_width = function (width) {
return $(window).width() >= width;
};
}
var resize = function() {
if (min_width('768px')) {
// Do some magic
}
};
$(window).resize(resize);
resize();
คำตอบของฉันอาจจะไม่ช่วยปรับขนาด iframe ให้เป็นความกว้างวิวพอร์ต 100% โดยมีระยะขอบในแต่ละด้าน แต่ฉันหวังว่าจะช่วยปลอบใจสำหรับนักพัฒนาเว็บที่ผิดหวังด้วยการเชื่อมโยงเบราว์เซอร์ของ JavaScript
บางทีนี่อาจช่วยได้เกี่ยวกับ iframe:
$('iframe').css('width', '100%').wrap('<div style="margin:2em"></div>');
[1] คุณสามารถใช้ $ (หน้าต่าง) .width () และ $ (หน้าต่าง) .height () เพื่อรับตัวเลขซึ่งจะถูกต้องในเบราว์เซอร์บางตัว แต่ไม่ถูกต้องในเบราว์เซอร์อื่น ๆ ในเบราว์เซอร์เหล่านั้นคุณสามารถลองใช้ window.innerWidth และ window.innerHeight เพื่อให้ได้ความกว้างและความสูงที่ถูกต้อง แต่ฉันอยากจะแนะนำวิธีการนี้เพราะมันต้องอาศัยการดมกลิ่นตัวแทนผู้ใช้
โดยทั่วไปแล้วเบราว์เซอร์ที่แตกต่างกันจะไม่สอดคล้องกันหรือไม่รวมแถบเลื่อนที่เป็นส่วนหนึ่งของความกว้างและความสูงของหน้าต่าง
หมายเหตุ: ทั้ง $ (หน้าต่าง) .width () และ window.innerWidth นั้นแตกต่างกันไปตามระบบปฏิบัติการโดยใช้เบราว์เซอร์เดียวกัน ดู: https://github.com/eddiemachado/bones/issues/468#issuecomment-23626238