Javascript 跨域iFrame调整大小问题

Javascript 跨域iFrame调整大小问题,javascript,html,iframe,Javascript,Html,Iframe,我从另一个来源获得的代码可以在我的网站上使用 <!DOCTYPE html> <html> <head> <script src="http://domain-name.co.uk/js/theirscript.js"></script> </head> <body> <iframe src='http://domain-name.co.uk/quo

我从另一个来源获得的代码可以在我的网站上使用

<!DOCTYPE html>
<html>
    <head>
        <script src="http://domain-name.co.uk/js/theirscript.js"></script> 
    </head>
    <body>
        <iframe src='http://domain-name.co.uk/quote/quote_0.numo?id=mySplID' id="ifHolderQuote" width="660" frameBorder="0" marginwidth="0" marginheight="0" scrolling="no" allowTransparency="true" onload="resizeCrossDomainIframe('ifHolderQuote', 'http://mySplDomain.co.uk');">
        </iframe>
    </body>
</html>

编辑:我将该文件上载到服务器,查看从浏览器本地打开该文件是否有问题,即使上载到服务器后该文件仍无法工作

条件
event.origin!==从计算机查看其他域时,它将始终为真,因为URL中没有域,因为浏览器使用
文件://
协议打开文件


因此,函数到此结束,您永远不会声明iframe的高度。

很好地发现这是一个安全问题。我使用的iFrame不允许运行跨域源脚本。由于我使用的是其他域中的框架,并将其放在我的域中,导致了Mozilla/许多其他流行浏览器建立的源策略的差异

经过密集的搜索和阅读,我终于找到了这条线索


因此,我正在努力纠正这个问题;使用CORS请求。可能会很有趣

对不起,我还应该补充一句,看看这样的事情是否会成为问题,我甚至把文件上传到了域名上,但它并没有按照我想要的方式出现。感谢您的回复。这就是我想说的,如果您将此上传到服务器。。。它将有一个域,脚本将工作,但如果您是从计算机上运行它,则不会工作,因为
file:///C:\Users\someone\Desktop\something.html
不是URL,也没有域。我还将脚本放在head标记中,为了调试,我添加了一个警报语句来显示传递的域,它提出了我的域名,然后我在If(event.origin)行之前使用了另一个警报,但它从未出现。因此我有一种奇怪的感觉,该函数甚至从未被调用过??你没有得到它:(.让我直说:当你从你的计算机(而不是服务器)上运行它时).event.origin
other_domain
的值是什么?我理解你的意思!我现在已将文件上载到服务器,将脚本标记更改为(我将在下一条评论中发布)。它显示了第一个警报-my-domain.co.uk。接下来的两个警报根本没有出现。。。
  function resizeCrossDomainIframe(id, other_domain) {
    var iframe = document.getElementById(id);
    window.addEventListener('message', function(event) {
      if (event.origin !== other_domain) return; // only accept messages from the specified domain
      if (isNaN(event.data)) return; // only accept something which can be parsed as a number
      var height = parseInt(event.data) + 40; // add some extra height to avoid scrollbar
      iframe.height = height + "px";
    }, false);
  }