重新加载iFrame页面上的iframe-resizer更改

时间:2014-06-24 12:26:27

标签: jquery iframe iframe-resizer

我正在使用以下lib http://davidjbradshaw.github.io/iframe-resizer/,它可以在源页面之后调整跨站点iFrame的大小。

虽然我遇到了以下问题但我无法解决:

  1. 首次加载页面时,iFrame的高度正确(整个加载的页面在iframe中可见)。但是当按下链接并转到另一个具有较大高度的网站时,第一个(在iFrame中)iFrame不会更改,并且iFrame页面的底部不会显示。怎么会发生这种情况,我该如何解决呢?

  2. 与上述问题非常相似。我通过“bodyMargin”命令设置了边距。它在第一页加载完成时工作正常,但是当点击iFrame中站点上的链接时,“bodyMargin”中设置的边距将清除,并且站点将变为其原始页面。我该如何解决这个问题?

  3. 代码:

    <? php
    /*
    Template Name: iFrame
    */
    
    get_header(); ?> <script type ="text/javascript"
    src="<?php echo get_template_directory_uri(); ?>/js/iframeResizer.min.js"></script> 
    <script language="javascript" type="text/javascript">
      function resizeIframe(obj) {
        obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
      }
    </script>
    
    <iframe src="http: //xxxxxxxxx.com/" id="iframe" width="100%" scrolling="no"></iframe>
    
    <script type ="text/javascript">
    iFrameResize({
        log: true, // Enable console logging
        enablePublicMethods: true, // Enable methods within iframe hosted page
        resizedCallback: function (messageData) { // Callback fn when resize is received
            $('p#callback').html(
                '<b>Frame ID:</b> ' + messageData.iframe.id +
                ' <b>Height:</b> ' + messageData.height +
                ' <b>Width:</b> ' + messageData.width +
                ' <b>Event type:</b> ' + messageData.type);
        },
        messageCallback: function (messageData) { // Callback fn when message is received
            $('p#callback').html(
                '<b>Frame ID:</b> ' + messageData.iframe.id +
                ' <b>Message:</b> ' + messageData.message);
            alert(messageData.message);
        },
        closedCallback: function (id) { // Callback fn when iFrame is closed
            $('p#callback').html(
                '<b>IFrame (</b>' + id +
                '<b>) removed from page.</b>');
        },
        bodyMargin: '-200px 0 0 -25px',
    });
    </script>
    
    <?php
    get_footer(); 
    ?>
    

1 个答案:

答案 0 :(得分:1)

如果您的iFrame移动域,则需要将checkOrigin选项设置为false。

https://github.com/davidjbradshaw/iframe-resizer#checkorigin