我正试图在Android(Dolphin浏览器)中模仿桌面式iframe并取得一些成功。使用的技巧是将<iframe>
position:relative;
置于具有固定维度<div>
的{{1}}内,然后使用jQuery Mobile(或者更确切地说只是vmouse事件)来处理鼠标滚动事件。
除了一件事之外,这一切都很好;即使overflow:hidden;
被剪裁,它的内容也会延伸浏览器以匹配大小。这在高度上几乎是显而易见的。
以下是JSFiddle中的简化示例代码:http://jsfiddle.net/euKhG/
以下是在Android浏览器中观看的结果:http://jsfiddle.net/euKhG/embedded/result/(仅适用于Android浏览器!)。
有人知道如何解决这个问题吗?我在其他地方看过iScroll和类似的建议,但他们似乎用这样的远程<iframe>
触摸帧。
答案 0 :(得分:2)
尝试在元标记中设置target-densitydpi
<meta id="viewport" name="viewport" content="initial-scale=1, user-scalable=no, width=device-width, target-densitydpi=160dpi"/>
但你必须改变所有其他的css
答案 1 :(得分:0)
为了证明这一点,在你的容器div中添加一个背景:#ff0000,你会发现它确实不是div的宽度/高度定义你的iframe的截止区域,而是一些'默认'iframe维度属性:http://jsfiddle.net/kauUr/
我的建议是,如果你说你的div是固定尺寸,请设置你的iframe,其宽度/高度属性具有相同的尺寸,以便匹配。您可以使用width和height属性执行此操作,也可以使用css更干净地使用css,就像您为容器div所做的那样。一旦你给iFrame提供了正确的宽度/高度,截止值应该符合你的预期,浏览器不应该滚动到iframe内容的大小,而应该滚动到你指定的尺寸。实际上,即使div的维度未提前知道,您也可以使用Javascript来获取它们,然后在运行时正确调整iFrame的大小。
<div style="width: 400px; height: 400px; overflow: scroll; background:#ff0000">
<iframe style="width: 400px; height: 400px" src="http://doc.jsfiddle.net" frameborder="0" scrolling="no"></iframe>
</div>
如果这不起作用,请尝试在iframe样式中拍一个overflow:none
。