gpt4 book ai didi

facebook - 有没有办法在 facebook canvas 中 pushState() 父窗口?

转载 作者:行者123 更新时间:2023-11-30 05:18:43 25 4
gpt4 key购买 nike

我希望我的 Facebook Canvas 应用能够在更改上下文时更新地址栏 URL。因此,例如,如果我的应用程序的主页 URL 是 https://apps.facebook.com/myapp/,并且用户点击了主屏幕上的某个项目,我希望显示的 URL在地址栏中更改为 https://apps.facebook.com/myapp/1/https://apps.facebook.com/myapp/#1 .

通常情况下,我的应用程序可以使用 HTML5 的 history.pushState() 来做到这一点。问题是, Canvas 应用程序在 iframe 内运行,无法访问父窗口的 pushState(因为 iframe 与 apps.facebook.com 不是同一个域)。另一种技术应该是仅更改地址的哈希部分,即 window.location.hash = "1",但出于同样的原因,这在 iframe 中也是不可能的。

可以通过使用重新加载整个页面来更改父页面 URL

window.parent.location = "https://apps.facebook.com/myapp/1/"

但是,这会导致父页面重新加载,占用大量秒数,然后重新加载 iframe - 总而言之,这对用户来说是一个非常漫长且令人沮丧的体验。

有没有一种我没有想到的方法可以做到这一点?

最佳答案

我几乎可以肯定,如果没有 Facebook 的特别帮助,就无法做到这一点。例如,Facebook 可以在 Canvas 页面上实现一个脚本,该脚本利用 postMessage ( https://developer.mozilla.org/en-US/docs/DOM/window.postMessage ) 来监听来自您的 iframe 的跨域消息。

但如果没有 Facebook 的合作,我认为任何现代标准浏览器都不允许您这样做。

关于facebook - 有没有办法在 facebook canvas 中 pushState() 父窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15109011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com