天天看点

如何根据iframe内嵌页面调整iframe高宽续篇实现1 动态接口的安全问题2 让B这个第三方嵌入一套html代码好吗?总结

a.com/detail/view 页面的iframe代码如下:

1

b.com是第三方的域名,所以要求在b.com/location/testiframe的页面增加下面的html

2

3

<code>&lt;iframe id=</code><code>"aiframe"</code> <code>src=</code><code>"#"</code> <code>style=</code><code>"display:none"</code><code>&gt;&lt;/iframe&gt;</code>

<code>a.com/deatil/iframe是a提供的动态接口,返回的数据是一段js:</code>

<code>&lt;script type=</code><code>"text/javascript"</code><code>&gt;parent.parent.document.getelementbyid(</code><code>"thirdiframe"</code><code>).style.height=</code><code>"20px"</code><code>;&lt;/script&gt;</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了。。。代码啥的,都是技术熟练活啊。。。