Gibt es eine Möglichkeit, PushState () das Elternfenster in Facebook Canvas zu drücken?

9

Ich möchte, dass meine Facebook-Canvas-App die URL der Adressleiste aktualisieren kann, wenn sich der Kontext ändert. Wenn also beispielsweise die Home-URL meiner App https://apps.facebook.com/myapp/ lautet und der Nutzer auf dem Startbildschirm auf ein Element klickt, möchte ich, dass die in der Adressleiste angezeigte URL in https://apps.facebook.com/myapp/1/ oder https://apps.facebook.com/myapp/#1 .

Normalerweise könnte meine App dies mit HTML5 history.pushState() tun. Das Problem besteht darin, dass die Zeichenbereichsanwendung in einem Iframe ausgeführt wird und nicht auf das pushState des übergeordneten Fensters zugreifen kann (weil der Iframe nicht dieselbe Domäne wie apps.facebook.com ist). Eine andere Technik sollte nur den Hash-Teil der Adresse ändern, d. H.% Co_de%, aber das ist aus dem gleichen Grund auch nicht innerhalb des Iframes möglich.

Es ist möglich, die URL der übergeordneten Seite durch erneutes Laden der gesamten Seite zu ändern, indem Sie

verwenden %Vor%

Dies würde jedoch dazu führen, dass die übergeordnete Seite neu geladen wird, eine lange Anzahl von Sekunden benötigt, und dann den iframe neu laden - alles in allem eine sehr lange und frustrierende Erfahrung für den Benutzer.

Könnte es einen Weg geben, an dem ich nicht gedacht habe?

    
onon15 27.02.2013, 09:54
quelle

1 Antwort

3

Ich bin mir fast sicher, dass es keine Möglichkeit gibt, dies ohne besondere Hilfe von Facebook zu tun. Zum Beispiel könnte Facebook ein Skript auf der Canvas-Seite implementieren, die postMessage ( Ссылка ) verwendet ) auf domänenübergreifende Nachrichten von Ihrem iframe zu hören.

Aber ohne Zusammenarbeit mit Facebook glaube ich nicht, dass Ihnen ein moderner Standard-Browser dies ermöglicht.

    
Aaron Gibralter 15.05.2013 17:47
quelle