Javascript 调整跨原点域的iFrame的高度

Javascript 调整跨原点域的iFrame的高度,javascript,html,css,iframe,Javascript,Html,Css,Iframe,我正在尝试将数据从eBay拉到iframe。问题是它没有调整内容物的高度,并且在下面留下了很大的间隙。我试着将iframe主体从视线中移开,但由于它是跨域的,所以我无法从中提取任何属性。请让我知道,如果有任何方法来实现这一点的JS或甚至CSS。 我已经尝试了StackOverflow的所有功能,但它似乎不适用于这里 函数onLoad(){ console.log( “高度”, document.getElementById(“目标”).contentWindow.document.body.o

我正在尝试将数据从eBay拉到iframe。问题是它没有调整内容物的高度,并且在下面留下了很大的间隙。我试着将iframe主体从视线中移开,但由于它是跨域的,所以我无法从中提取任何属性。请让我知道,如果有任何方法来实现这一点的JS或甚至CSS。 我已经尝试了StackOverflow的所有功能,但它似乎不适用于这里


函数onLoad(){
console.log(
“高度”,
document.getElementById(“目标”).contentWindow.document.body.offsetHeight
);
}

您可以使用此库:


它允许您自动调整跨域iFrame的高度和宽度,以适应其包含的内容。

有一种方法可以实现这一点,但您需要使用代理来处理跨域请求。您可以使用PHP实现这一点。使用以下代码创建一个php文件-content.php:

<?php
$queryString = substr($_SERVER["QUERY_STRING"], 4);
$fileContents = file_get_contents($queryString);
echo $fileContents;
?>
在这里,您将把URL传递到content.php页面,在那里它将解析请求并返回响应。由于content.php的来源相同,因此它将解决cors问题

附言: $queryString=substr($\u服务器[“查询字符串”],4)

php中的这段代码是因为$\u服务器[“QUERY\u STRING”]将

网址=https://vi.vipr.ebaydesc.com/ws/eBayISAPI.dll?ViewItemDescV4&item=383383822672&t=0&tid=310&category=171228&seller=walrus_0&excSoj=1&excTrk=1&lsite=3&ittenable=false&domain=ebay.co.uk&descgauge=1&cspheader=1&oneClk=2&secureDesc=1


由于“URL=”前缀,此URL无效。substr()函数将删除它。

除非您有权访问子对象的代码,否则无法从父窗口了解iframe的任何内容,在这种情况下,您可以按照此操作回答您的问题吗?我没有权限访问子元素,因为它来自eBayThen您无法执行您要求的操作我尝试了上述操作,但我没有权限在子元素中添加任何内容我尝试了此操作,但为了跨域工作,您需要在iframe src中添加脚本。我没有访问它的权限。@AreefSyed您可以在iframe的内容中附加一个脚本标记,请详细说明。我认为这是不可能的,因为我没有读/写iframe内容的权限。但如果你有办法做到这一点,请建议。谢谢你!这很有帮助。
<div id="iframeHolder">
    <iframe id="iframe"
    onload='iframeResizer()'
    scrolling="no"
    sandbox="allow-scripts allow-popups allow-popups-to-escape-sandbox allow-same-origin"
    src="content.php?url=https://vi.vipr.ebaydesc.com/ws/eBayISAPI.dll?ViewItemDescV4&amp;item=383383822672&amp;t=0&amp;tid=310&amp;category=171228&amp;seller=walrus_0&amp;excSoj=1&amp;excTrk=1&amp;lsite=3&amp;ittenable=false&amp;domain=ebay.co.uk&amp;descgauge=1&amp;cspheader=1&amp;oneClk=2&amp;secureDesc=1" height="100%" width="100%" ></iframe>
   </div>

    <script type="text/javascript">
      function iframeResizer(){
        let iframeHolder = document.getElementById('iframeHolder')
      let iframe = document.getElementById('iframe')
      let iframeHeight
      let iframeHolderHeight

      iframeHeight = iframe.contentWindow.document.body.offsetHeight;
      console.log(iframeHeight)
      iframeHolderHeight = iframeHolder.style.height = iframeHeight + 'px'
      }

    </script> 
#iframeHolder{
        height: 100%;
        position: relative;
      }

      iframe{
        position: absolute;
        height: 100%;
        top: 0;
        left: 0;
      }