Fancybox/iFrame使用postMessage定位(跨域)

发布于 2024-11-08 13:21:52 字数 890 浏览 0 评论 0原文

当用户单击标题区域中的按钮时,我试图获取 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, '*') 它是未定义的。

有人可以帮忙吗?

I am trying to grab the location of an iFrame (in a fancybox) when the user clicks a button in the title area. It's on a different domain so I'm using postMessage, and I want it to grab the full url (eg "www.example.com?pid=12345") so when the fancybox is closed using the "Attempt Search" button, my site can then search for the pid "12345".

Snippets...

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

This alerts the "Hello?" message OK, but e.origin returns the parent domain (not the iFrame's url). And if I postMessage(this.location, '*') it's undefined.

Can anybody help please?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-11-15 13:21:52

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

It is not possible. For security reasons, an iframe of a different domain can not communicate with the page that it is being framed in on.

春花秋月 2024-11-15 13:21:52

你尝试过这个库吗? http://easyxdm.net/wp/

Have you tried this library? http://easyxdm.net/wp/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文