我希望我的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().问题是,在画布上应用的iframe中运行,而不能访问父窗口的pushState(因为iframe是不是同一个域中apps.facebook.com).另一种技术应该只改变地址的哈希部分,即window.location.hash = "1",出于同样的原因,也不能在iframe中进行.
通过使用,可以通过重新加载整个页面来更改父页面URL
window.parent.location = "https://apps.facebook.com/myapp/1/"
Run Code Online (Sandbox Code Playgroud)
但是,这会导致父页面重新加载,占用大量秒数,然后重新加载iframe - 总而言之,这对用户来说是一个非常漫长而令人沮丧的体验.
有没有办法做到这一点我没有想到?
iframe facebook same-origin-policy pushstate facebook-canvas