私のFacebookアプリはフラッシュゲームです。ウィンドウがアンロードされたときに、ゲームの swf が最新の状態をサーバーに保存するようにします。swfobject を使用して swf を埋め込んでいるので、その埋め込みハンドラーを使用してonbeforeunload
リスナーをウィンドウに追加します。
function embedHandler(event)
{
shell=event.ref;
window.onbeforeunload=function(event)
{
shell.message("save", null);
//delay the unloading a bit so flash has time to contact server
var now = new Date().getTime();
var later=now+50;
while (now < later)
{
now = new Date().getTime();
}
}
}
これが問題です。これは、swf がアプリ (Rails アプリ) から直接読み込まれるたびに機能します。swf が Amazon からロードされている場合は機能しません。
クロスドメインの問題はすべて、swf とアプリの間で解決されます。レール アプリは Amazon swf からの呼び出しを受け入れ、Amazon swf はレール アプリからデータをロードします。
ExternalInterface
また、発信通話と着信通話の両方で機能します。しかし、これはブラウザのセキュリティ上の問題であると思わExternalInterface
れます.
window.onbeforeunload
ハンドラー内から呼び出されます- swf は Amazon から発信されています。
何が問題ですか?onbeforeunload
ゲームが CDN からのものであり、保存がJavascriptによってトリガーされた場合、ゲームの状態を目立たないように保存するにはどうすればよいですか? または、これと同じことを達成するためのより良い方法はありますか?
Firefox でのテスト。