a.com/detail/view 页面的iframe代码如下:
1
b.com是第三方的域名,所以要求在b.com/location/testiframe的页面增加下面的html
2
3
<code><iframe id=</code><code>"aiframe"</code> <code>src=</code><code>"#"</code> <code>style=</code><code>"display:none"</code><code>></iframe></code>
<code>a.com/deatil/iframe是a提供的动态接口,返回的数据是一段js:</code>
<code><script type=</code><code>"text/javascript"</code><code>>parent.parent.document.getelementbyid(</code><code>"thirdiframe"</code><code>).style.height=</code><code>"20px"</code><code>;</script></code>
这段中的20px是根据参数来生成的
基本这样就可以了。但是在同事的提醒下,考虑到后面几个问题:
a.com/detail/iframe?height=20
所以在安全性上要注意一下,需要对height参数进行验证,比如使用php的intval这个函数来一劳永逸。
这里不讨论b是否允许嵌入的商务问题。即使b允许嵌入了,但是以后万一想修改这个代码,还需要去让b来修改。
实际上让b嵌入一个a域名的js
这个js返回的内容如下:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<code>function</code> <code>inita() {</code>
<code> </code><code>var</code> <code>iframea = document.createelement(</code><code>'iframe'</code><code>);</code>
<code> </code><code>iframea.style.display=</code><code>'none'</code><code>;</code>
<code> </code><code>iframea.id=</code><code>'iframea'</code><code>;</code>
<code> </code><code>document.body.appendchild(iframea);</code>
<code>}</code>
<code>function</code> <code>updateaheight(height) {</code>
<code> </code><code>if</code> <code>(document.getelementbyid(</code><code>'iframea'</code><code>) == null) {</code>
<code> </code><code>init360();</code>
<code> </code><code>}</code>
<code> </code><code>var</code> <code>iframea = document.getelementbyid(</code><code>'iframea'</code><code>);</code>
<code>if</code> <code>(window.addeventlistener) {</code>
<code> </code><code>window.addeventlistener(</code><code>'load'</code><code>, inita, false);</code>
<code>}</code><code>else</code> <code>{</code>
<code> </code><code>window.attachevent(</code><code>'onload'</code><code>, inita);</code>
对上面的一段代码,注意几点:
有两种方法:
c.1 b在改变页面高度的事件上调用一个函数,来修改b页面的iframe的src,其中,这里的updateaheight就是这个用处的
c.2 做循环,循环体内就是将当前页面的高度设置值,传递给iframe,这个循环当然可以给http://a.com/detail/iframejs 这个js来做的。
原本以为很简单的一个事情,整一整还可以整出这么多名堂,话说也好久没写js了。。。代码啥的,都是技术熟练活啊。。。