iphone下iframe问题记录

iphone下iframe问题记录,第1张

iframe在手机上展示正好一屏的内容,横向100%,纵向高度固定(例如500px)超出可滚动。

这些问题在Mac上、window上、Android上都是没有的。

这两个问题需要一起说

关于实现滚动

百度一下可以看到很多了

关于宽度溢出

本质是iOS手机内,iframe内页面 display:none 隐藏掉的元素宽度会依然计算在内(文章最后再给个demo吧)。

解决方案:

(1) 对于子页面不可控的情况下 最简单的解决办法

给iframe加上属性 scrolling="no"

页面会自动变得规规矩矩,虽然有 scrolling="no" 属性,在电脑上模拟会无法滑动,但是在iOS手机上会全部铺满,Y轴上可以依赖上面提到的父节点的属性进行滚动。

(2) 子页面可控 *** 作子页面

方法一:html加属性 width:100vw; , 注意给html和body加属性width:100%无效

方法二:html加属性 width: 1px;min-width: 100%;

子页面不可控的情况下,无解。

可控的情况下,以下面这种布局来写子页面,子页面body下的全部内容全部包裹在#wrap这个dom中。用dom的滚动代替body的滚动。iOS手机下会认为子页面无尺寸。

子页面:

父页面:

在Mac(Chrome)上和Android上一切正常,使用iphone打开,会发现横向边界被截断了。

如果改为 overflow-x: scroll; 会发现横向可滑动的距离非常长。通过使用Mac Safari调试iphone可见

iframe内页面超出隐藏overflow:hidden元素的宽度也被计算在内了

你用jq的时候是在页面加载的时候就获取了,并不是点击的时候获取的。时机不对。

$('#btn2')click(function () {

var boxAheight = $("#frame_content")outerHeight(true);

alert(boxAheight);

})

我也没有更好的办法

因为我的测试环境下与你测试环境下不一致

bhtml

代码:

<iframe id="ttoday" src="chtml" border="0" frameborder="0" width="98%" scrolling="no"></iframe>

chtml

代码:

1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />1<BR />

<script language="JavaScript" type="text/javascript">

function $(){parentdocumentallttodaystyleheight = documentbodyscrollHeight;}$();$();

</script>

测试过的

你的代码写的没有错

如果我猜得不错的话,你是直接运行的这段代码!

先给你讲原理:

调用DOM对象,必须在页面(框架)完全下载完后才能构建DOM树, 所以我们一般是把这些代码封到一个函数内,再用windowonload来指向这样解决:

function show()

{

documentwrite(windowframes["cwin"]documentgetElementById("reg")styleheight);

}

windowonload=show;

也许你会说,那为什么我的innerHTML能获取到呢 请注意:完全下载!

明白了吧

1.由于<iframe>标记为有边框属性,所以,一般情况您设为100,他也与实际上大小有出入所以您可以设小一点,我的经验是一般调4个象素.

2<iframe>的长宽单位有两种,一种是百分比,另一种是象素.您给出的100应该是象素吧.所以直接输入100就可以了.

跨域问题,没法实现

因为你没法获取被包含页面的任何信息,当然包括它的高度。所有尝试都会以“拒绝访问”告终。

不过我不知道你要做的是网站还是单纯在本地跑的html页面,如果是本地html,可以简单地把文件扩展名改为hta就可以解决拒绝访问的问题,接着再获取其页面的高度并设置iframe的高度即可。关于高度的获取,可用“[iframe对象]contentWindowdocumentbodyclientHeight”,反正关键是contentWindow这个对象,有了它,你 *** 作iframe中的页面,就像 *** 作自己的页面一样轻松了。

但如果你做的网页是放到网站上去的,那没办法,浏览器考虑到安全性问题,是不允许某个网页去 *** 作不在同一个域下的页面的。你自己可以测试一下,当iframe的src是不同域下的网址时,获取contentWindow对象就会提示“拒绝访问”的。

以上就是关于iphone下iframe问题记录全部的内容,包括:iphone下iframe问题记录、jq怎么获取自适应高度的iframe高度的准确数值、iframe 自适应高度问题(采用追加100分)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9531125.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存