iframe中的回调方法将值返回给opener

时间:2010-01-15 10:20:07

标签: javascript static methods mootools

我必须在iframe中调用一个回调方法才能将值返回给opener。

我知道SqueezeBox有“分配,打开,关闭”静态方法,但我不明白它是如何工作的,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

我对SqueezeBox了解不多,但我已经完成了iframe通信的一些工作。除非您的iFrame和开启者位于同一个域中,否则您无法从一个域呼叫到另一个域。

我为解决这个问题所做的工作是写入URL的哈希值。然后,开启者可以读取该值并找出要做的事情。

例如,

<iframe name="my-frame" id="my_frame" src="http://www.somewhere.com" width="540" height="1000" border="0" style="overflow:hidden; border: none;">
   <script type="text/javascript">window.location.hash = 'close';</script>
</iframe>

<script type="text/javascript">

  // Function to look for a token in the url hash 
  var tokenValue = function(){
    var hash = document.location.hash;
    return (hash && hash.length > 1) ? hash.substring(1, hash.length) : null;
  };

  // Function to set the token and notify the user when it is found in the url hash.
  var checkForToken = function(){
    if (tokenValue()) {
      alert(tokenValue());
      $clear(periodical);
    }
  };

  // Start a periodical that will check for
  var periodical = checkForToken.periodical(100);
</script>