国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页网页设计HTML/CSS → iframe 高度设置、iframe 自适应高度方法总结

iframe 高度设置、iframe 自适应高度方法总结

我要评论 2014/04/07 13:50:35 来源:国语自产精品视频在线看 编辑:zbbingyang.com [ ] 评论:0 点击:310次

谓【wèi】🔷iframe自适应高度,就是,基于界🔡面美观【miàn měi guān】和【hé】🥏交互的【jiāo hù de】考虑【kǎo lǜ】🥥,隐藏了🏈iframe的🥚border和【hé】🥏scrollbar,让人看不出它【bú chū tā】是个iframe。如果iframe始终调用同一个固定【gè gù dìng】高度的🥚页面⏯,我们直【wǒ men zhí】接写死【jiē xiě sǐ】iframe高度就可以了🏈。而如果iframe要切换【yào qiē huàn】👜页面⏯,或者被👦包含页面⏯要做DOM动态操作,这时候,就需要🧞程序去同步【tóng bù】iframe高度和【gāo dù hé】👉被包含【bèi bāo hán】😳页的🥚实际高度了🏈。

如果【rú guǒ】iframe的高度【gāo dù】✍没有确定😚,那将是初始的🗂高度【gāo dù】。
iframe是网页中的一部分【bù fèn】🎞,其大小还要受到网页【dào wǎng yè】📜的限制❎,设置最📷高可以使用height="100%"。
基本上【jī běn shàng】解决【jiě jué】iframe超出的高度【gāo dù】✍都是增加了滚动条【gǔn dòng tiáo】来实【shí】🔶现的,很简单,如果【rú guǒ】你🔰iframe中的信【zhōng de xìn】息超出💋了一屏【le yī píng】幕,你就必【nǐ jiù bì】须使用🙋滚动条【gǔn dòng tiáo】了。

开始用的时候还不行【hái bú háng】🎪,后来发现是因为【wéi】js跨域问【kuà yù wèn】🔯题🤐,没有权限【xiàn】🐸。后来设置了window.document.domain 就可以🍸了,用的是🙎jquery代码【dài mǎ】2方法【fāng fǎ】。

跨域下⛸的iframe自适应高度😵

跨域的【kuà yù de】时候,由于js的同源【de tóng yuán】🤬策略【cè luè】,父页面【fù yè miàn】🤦内的【nèi de】🥖js不能获【bú néng huò】取到🚤iframe页面的【yè miàn de】🦂高度😵。需要一个页【gè yè】🛣面来做【miàn lái zuò】代【dài】🚢理。
方法如【fāng fǎ rú】下⛸:假设【jiǎ shè】🥩www.a.com下⛸的一个【de yī gè】页【yè】🛣面a.html要包含【yào bāo hán】🕤www.b.com下⛸的一个【de yī gè】页【yè】🛣面c.html。
我们使用【yòng】www.a.com下的另🎇一个页【gè yè】🛣面agent.html来做代【dài】🚢理,通过它获取【huò qǔ】iframe页面的【yè miàn de】🦂高度😵,并设定iframe元素的【yuán sù de】高度🐋。

a.html中包含iframe:
<iframe src="http://www.b.com/c.html" id="Iframe" frameborder="0" scrolling="no" style="border:0px;"></iframe>

在⏲c.html中加入【zhōng jiā rù】如下⛸代【dài】码:
<iframe id="c_iframe"  height="0" width="0"  src="http://www.a.com/agent.html" style="display:none" ></iframe>
<script type="text/javascript">
    (function autoHeight(){
        var b_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
        var b_height = Math.max(document.body.scrollHeight,document.body.clientHeight);
        var c_iframe = document.getElementById("c_iframe");
        c_iframe.src = c_iframe.src+"#"+b_width+"|"+b_height; 
    })();
</script>

最后🌏,agent.html中放入一段🔩js:
<script type="text/javascript">
    var b_iframe = window.parent.parent.document.getElementById("Iframe");
    var hash_url = window.location.hash;
    if(hash_url.indexOf("#")>=0){
        var hash_width = hash_url.split("#")[1].split("|")[0]+"px";
        var hash_height = hash_url.split("#")[1].split("|")[1]+"px";
        b_iframe.style.width = hash_width;
        b_iframe.style.height = hash_height;
    }
</script>
agent.html从🏵URL中获得【zhōng huò dé】宽度值和高度😵值,并设置【bìng shè zhì】iframe的高度🐋和宽度(因为👀agent.html在⏲www.a.com下⛸,所以操作a.html时不受🌧JavaScript的同源【de tóng yuán】🤬限制)

超级简【chāo jí jiǎn】⛔单的【de】📵方法,也不用写什么【xiě shí me】判断浏💧览器高【lǎn qì gāo】度💳、宽度💳啥的【de】📵。
下面的【xià miàn de】💮两种方法自选😝其一就行了。一个是【yī gè shì】放在和🗿iframe同页面的【yè miàn de】📵,一个是【yī gè shì】放在test.html页面的【yè miàn de】📵。
注意别🐨放错地【fàng cuò dì】方了哦。

下面是其他两种方法【zhǒng fāng fǎ】:
iframe代码,注意💦要写【yào xiě】ID

<iframe src="test.html" id="main" width="700" height="300" frameborder="0" scrolling="auto"></iframe>

jquery代码1:

//注意💦:下面的📂代码是【dài mǎ shì】🚕放在test.html调用【diào yòng】
$(window.parent.document).find("#main").load(function(){
var main = $(window.parent.document).find("#main");
var thisheight = $(document).height()+30;
main.height(thisheight);
});

jquery代码2:

//注意💦:下面的📂代码是【dài mǎ shì】🚕放在和iframe同一个💓页面调用【diào yòng】
$("#main").load(function(){
var mainheight = $(this).contents().find("body").height()+30;
$(this).height(mainheight);
}); 

第二种🙇有效【yǒu xiào】👋,不过要【bú guò yào】注意【zhù yì】一点是【diǎn shì】,增加的🚖JS要写在iframe下面【xià miàn】🏢,放在头部是测【bù shì cè】试没有效【yǒu xiào】👋果。
测试代【cè shì dài】码🥩:
<iframe id="mainframe" name="mainframe" marginwidth="0" marginheight="0" src="/Home/Activitylist" frameborder="0" width="100%" scrolling="no" height="100%"></iframe>
<script type="text/javascript">
//注意【zhù yì】:下面【xià miàn】🏢的代码🥩是放在和🎵iframe同一个【tóng yī gè】页面调用,放在iframe下面【xià miàn】🏢
$("#mainframe").load(function () {
var mainheight = $(this).contents().find("body").height() + 30;
 $(this).height(mainheight);
});
</script>

关键词:iframe

阅读本文后您有什么感想? 已有 人给出评价!

  • 2 欢迎喜欢
  • 2 白痴
  • 2 拜托
  • 2 哇
  • 2 加油
  • 2 鄙视