iframe窗口高度自适应的又一个巧妙实现思路

  次阅读 作者:智能小宝 来源:互联网 2016-01-26 10:59 我要评论(0)

这篇文章主要介绍了实现iframe窗口高度自适应的又一个巧妙思路,需要的朋友可以参考下

domainA 中有一个页面index.html,通过iframe嵌套了domainB中的一个页面other.html

由于other.html页面在iframe中显示,而且其页面内容会动态的增加或减少,现在需要去掉iframe的滚动条

由于javascript同源策略的限制,无法进行跨域操作,使得问题比较棘手

参考了一下网上的做法,引入了一个代理页面,或者叫做中介 agent.html,属于domainA

然后,在domainB 中的other.html中,再使用iframe将agent.html进行嵌套

好了,现在情况是这样的:

index.html 使用iframe 嵌套 other.html

other.html 使用iframe 嵌套 agent.html

之所以要引入第3个页面agent.html,就是为了遵守 同源策略 的规则,完成不同domain下参数的传递!

我们最终的目的是要去掉滚动条,又要保证被嵌入的页面内容全部得到显示

1.取得other.html页面的实际高度height

2.将height设置到其嵌入的iframe的src属性上

3.在agent.html中截取出所属iframe的src属性中的height值

下面的例子中,使用了一个技巧,避免了使用setInterval()不断去设置iframe的高度

做法是在iframe的src上,附加一个时间戳,让浏览器每次都重新加载agent.html

进而让agent.hml中的js函数invokeMethodInTopWindow()得到执行

domainA 中的2个html

index.html

代码如下:

#{extends 'main.html' /}

#{set title:'Home' /}

<hr>

<div style="color:red;font-weight:bold">窗口自适应---绕开同源策略的限制,同时又利用同源策略,去掉 iframe的滚动条,动态调整窗口的高度,让其能够显示被嵌套页面的所有内容</div>

<!-- 需要动态调整高度的iframe -->

<div style="text-align:center;">

<iframe name="domainB" src="http://127.0.0.1:8088/other" width="80%" scrolling="no" frameborder="0"></iframe>

</div>

<script type="text/javascript">

function resize(height) {

//alert("resize");

document.getElementsByName("domainB")[0].height=height;

}

</script>

agent.html

代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

我是代理页面哦!

<script type="text/javascript">

window.onload = invokeMethodInTopWindow;

function invokeMethodInTopWindow() {

//alert("调用同域下的函数,重置iframe的高度");

var domainA = document.parentWindow;

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...