ono*_*n15 9 iframe facebook same-origin-policy pushstate facebook-canvas
我希望我的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 - 总而言之,这对用户来说是一个非常漫长而令人沮丧的体验.
有没有办法做到这一点我没有想到?
我几乎可以肯定,如果没有 Facebook 端的特殊帮助,就没有办法做到这一点。例如,Facebook 可以在画布页面上实现一个脚本,利用postMessage( https://developer.mozilla.org/en-US/docs/DOM/window.postMessage ) 监听来自 iframe 的跨域消息。
但如果没有 Facebook 的合作,我认为任何现代的标准浏览器都不会允许你这样做。
| 归档时间: |
|
| 查看次数: |
980 次 |
| 最近记录: |