2012-01-19 7 views
1

私はFacebookの中に「ワンページ」アプリをコーディングしています(キャンバスアプリのアプローチを使用しています)。ユーザーがアプリの中を移動している間、私はapps.facebook.com/my-app#current_locationのような場所を変更し、AJAX経由でものを読み込んでいます。アプリのキャンバスに渡されたFacebookアプリのURLからURLフラグメント(ハッシュ)を取得するにはどうすればよいですか?

残念ながら、誰かがブラウザにhttp://apps.facebook.com/my-app#current_locationをロードすると、キャンバスアプリにはURLフラグメント#currrent_pageが表示されません。

この制限を回避するにはどうすればよいですか?

答えて

0

URLフラグメントはクライアント側(ユーザーのブラウザ)でのみ読み取られるため、Facebookはサーバーに送信するPOSTリクエストでそのフラグメントを送信できません。

あなたができることは、選択したサーバー側の言語に関係なく、同じルートを持つすべてのURLをキャッチし、何とかエンコードしてクライアント側に送信して、クライアント側のJavascriptによって読み取られますナビゲートする責任があります。

例:ユーザー負荷http://apps.facebook.com/my-app/current_location/代わりにに気付きます)。あなたは(ERB)のようなものがあるでしょう、あなたの単一のページを、サーブ:

<script>MyApp.navigate("<%= request.path %>");</script>

あなたのナビゲート機能は、次の操作を行うことができます:

function navigate(path) { 
    window.location.href = "#" + path; 
} 
+0

はい、私のアプリで私は、httpのURLを設定することはできません。 facebook.com/my-app/current_location JSを経由している間、ユーザーはブラウザを更新せずにアプリをブラウズしています。私はそれをhttp://apps.facebook.com/my-app#current_locationに設定することができ、誰かがそのURLをコピーして友達に送信することができます...運がない... –

+0

私はそれを回避する方法はありません。おそらく、«permalink»や«email to friend»や«bookmark»のようないくつかのUI共通部分を利用するかもしれません。 –

0

うん、ハッシュURLは使用にいいですしかし、あなたのサイト内でのナビゲーションのためには、URLを共有するとあまり良くありません。解決策は、それぞれのオブジェクトに標準URLを作成することです。

だから誰かがhttp://yoursite.com/#artists/styxのような特定の情報にアクセスできるときは、サーバーがhttp://yoursite.com/artists/styxのコンテンツを配信する方法もあります。この方法で誰かがhttp://apps.facebook.com/yoursiteapp/artists/styxを共有し、サイト内の正しいコンテンツにアクセスできます。

1

私はあなたの質問に正しく答えることができませんが、私はそれがすでに古くなっていると思うので、以下の情報は他の人がこれらの(ハッシュ) URLフラグメントと呼ばれています。

http://blog.httpwatch.com/2011/03/01/6-things-you-should-know-about-fragment-urls/

#文字を含むすべてのURLは、フラグメントURLです。

layout of a url fragment

: #の左側にURLの一部が ブラウザと フラグメント識別子としても知られている右、上の部分によってダウンロード可能なリソースを特定し、リソース内の位置を指定あなたが要求したURLやリファラー ヘッダ内のフラグメントIDを見ることは決してないだろう 、HttpWatchのようなHTTPスニッファでフラグメントのURLを使用してみた場合

フラグメントは、HTTPリクエストメッセージに

を送信されません。その理由は、フラグメント識別子が ブラウザでのみ使用されているためです。 サーバーから返されるリソースには影響しません。ここでは、フラグメントURLをリフレッシュすることによって を生成したトラフィックを示すHttpWatchのスクリーンショットです://アプリケーション:

HttpWatch Screenshot

関連する問題