使用具有外部站点和JQuery事件的Iframe

时间:2012-09-19 20:47:28

标签: jquery html iframe external

我读了很多东西,我不确定是否可以这样做,每个人都有不同的方法。

我有一个与第三个合作伙伴网站链接的网站,甚至更多是通过安全句柄,如果我的网站上没有登录,则第三个合作伙伴网站不允许用户。这条评论的提示是没有办法改变第三个合作伙伴的任何一行代码。

另一方面,我在我的网站上有一个带有两件事的HTML:

  1. <iframe>与第三个合作伙伴网站。
  2. <div> position:absolute以iframe作为指南,就像“现在点击此处,现在去那里”。
  3. 到目前为止一直很好,我也使用以下JQuery脚本调整iframe高度到供应商文档:

    <script type="text/javascript">
    function adjustmyiframe() {
    var theFrame = $('#iFrameToAdjust', parent.document.body);
    theFrame.height($(document.body).height() + 100);
    }
    </script>
    

    我的iframe是:

    <iframe 
    id="iFrameToAdjust" 
    onload="adjustmyiframe();"
    width="100%"
    height="100%" name="myiframe" frameborder="1" vspace="0" hspace="0"
    marginwidth="0" marginheight="0" scrolling="no" noresize
    
     src="http://externalsite"></iframe>
    

    再次,到目前为止一切顺利。但是,当用户点击iframe内的链接时,供应商网站当然会重新加载并具有不同的高度,而我的iframe不会再次调整。

    所以我的问题是:

    • 每次供应商网站调整高度或加载新页面时,我都可以自动调整我的iframe高度吗?我怎么能这样做?
    • 定时器选项的性能真的很差?

    谢谢和亲切的问候

1 个答案:

答案 0 :(得分:1)

在这种情况下,最好避免事件监听,并使用递归setTimeout

进行轮询
function adjustmyiframe() {
    var theFrame = $('#iFrameToAdjust', parent.document.body);
    theFrame.height($(document.body).height() + 100);
    setTimeout(adjustmyiframe, 1000); // check again in 1 second.
}