使用postMessage的Fancybox / iFrame位置(跨域)

时间:2011-05-20 01:13:54

标签: javascript iframe fancybox postmessage

当用户点击标题区域中的按钮时,我试图抓住iFrame的位置(在fancybox中)。它在不同的域上,所以我使用postMessage,我希望它获取完整的URL(例如“www.example.com?pid=12345”),所以当使用“尝试搜索”按钮关闭fancybox时,我的然后,网站可以搜索pid“12345”。

...片段

<script type="text/javascript">
  window.addEventListener("message", function(e) {
    alert(e.data + " : " + e.origin + " : " + e.source);
  }, false);
</script>


<script type="text/javascript">
  $(document).ready(function() {
    $("a#codelookup").fancybox({
    'width' : 1050,
    'height' : '75%',
    'title' : '<p class="wrapbutton"><a href="javascript:;" onClick="postMessage(\'Hello?\', \'*\'); $.fancybox.close();">Attempt Search</a></p>',
    'titlePosition' : 'inside',
    'type' : 'iframe'
  });
});

这警告“你好?”消息OK,但e.origin返回父域(而不是iFrame的url)。如果我postMessage(this.location,'*')它是未定义的。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

这是不可能的。出于安全原因,不同域的iframe无法与正在框架的页面进行通信。

答案 1 :(得分:0)

你试过这个图书馆吗? http://easyxdm.net/wp/