我是这样想的。它是一个两步过程。
第 1 步 - 检查设备是 iPhone 还是 iPod。
第 2 步 - 如果是,则检查浏览器是否为 safari
// On document ready set the div height to window
$(document).ready(function(){
// Assign a variable for the application being used
var nVer = navigator.appVersion;
// Assign a variable for the device being used
var nAgt = navigator.userAgent;
var nameOffset,verOffset,ix;
// First check to see if the platform is an iPhone or iPod
if(navigator.platform == 'iPhone' || navigator.platform == 'iPod'){
// In Safari, the true version is after "Safari"
if ((verOffset=nAgt.indexOf('Safari'))!=-1) {
// Set a variable to use later
var mobileSafari = 'Safari';
}
}
// If is mobile Safari set window height +60
if (mobileSafari == 'Safari') {
// Height + 60px
$('#right-sidebar').css('height',(($(window).height()) + 60)+'px');
} else {
// Else use the default window height
$('#right-sidebar, .profile').css({'height':(($(window).height()))+'px'});
};
});
// On window resize run through the sizing again
$(window).resize(function(){
// If is mobile Safari set window height +60
if (mobileSafari == 'Safari') {
// Height + 60px
$('#right-sidebar').css('height',(($(window).height()) + 60)+'px');
} else {
// Else use the default window height
$('#right-sidebar, .profile').css({'height':(($(window).height()))+'px'});
};
});
然后在需要执行移动 Safari 特定代码时使用 mobileSafari 变量。
首先从设备开始排除 iPad 和台式机等也可以运行 Safari。然后第二步排除了可能在这些设备上运行的 Chrome 和其他浏览器。
这是我为什么这样做的更深入的细分 - http://www.ethanhackett.com/?blog=window-height-100-on-mobile-safari-coding-solution