2011-05-20 117 views
3

我試圖抓住一個iFrame(在fancybox)中的位置,當用戶單擊標題區域中的按鈕時。它位於不同的域中,因此我使用postMessage,並且我希望它獲取完整的URL(例如「www.example.com?pid=12345」),因此當fancybox使用「嘗試搜索」按鈕關閉時,我的網站然後可以搜索pid「12345」。Fancybox/iFrame使用postMessage的位置(跨域)

片段...

<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' 
    }); 
}); 

這將提醒 「喂?」消息確定,但e.origin返回父域(不是iFrame的url)。如果我postMessage(this.location,'*')它是未定義的。

任何人都可以幫忙嗎?

+0

你是怎麼做到的?我有同樣的問題...仍然沒有解決方案...我希望你能發佈工作解決方案!提前致謝 – menardmam 2014-11-22 18:58:38

回答

1

這是不可能的。出於安全原因,不同域的iframe無法與正在構建的頁面進行通信。