問題描述:
iframe設定了高度(例如500px)。倘若iframe的內容足夠長超出了iframe設定的高度時,在ipad等裝置上。iframe內部html的捲軸不出現。並且活生生的從500px處截斷,(類似overflow:hidden的效果)下面的內容不再顯示。
問題重現:
結構:
index.html :
<style>
#iframe{height:500px;}
</style>
<div id="content"> <iframe frameborder="0" src="iframe.html" id="iframe"></iframe></div>
iframe.html:
<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8" /><title>IOS frame 捲軸 demo</title></head><body>
<div class="container"> 我是一堆很長。很長,很高,很高的內容。</div><script src="../jquery.js"></script></body></html>
問題原因:
在IOS裝置中,iframe內部的html的捲軸無法生效。
解決辦法:
把iframe中body裡的內容全部包裹一層,然後設定包裹這一層的height,使用屬性-webkit-overflow-scrolling:touch;overflow:auto;
代碼如下:
iframe.html
<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8" /><title>IOS frame 捲軸 demo</title></head><body><style>#wrapper{height:500px;-webkit-overflow-scrolling:touch;overflow:auto;}</style><div class="container"> 我是一堆很長。很長,很高,很高的內容。</div><script src="../jquery.js"></script><script> var UA = navigator.userAgent; var forIOS = function(){ if(!UA.match(/iPad/) && !UA.match(/iPhone/) && !UA.match(/iPod/)){return;} if($('#wrapper').length){return;} $('body').children().not('script').wrapAll('<div id="wrapper"></div>'); }();</script></body></html>