我必须在iframe中调用一个回调方法才能将值返回给opener。
我知道SqueezeBox有“分配,打开,关闭”静态方法,但我不明白它是如何工作的,有人可以帮助我吗?
答案 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>