1.Flash内でカテゴリーを選択
2.カテゴリーごとの商品が一覧表示される
3.商品を選ぶと商品購入ページに飛ぶ
4.ブラウザの戻るボタンでもどる
5.Flashが最初から再生される
6.再度カテゴリーを選択
...
これがまあ普通だった訳だが。
deep linking なる手法で解決する方法が発明されていたようで。
初めて見たのは、…って、紹介しようとしたら、かわっとるがや。
やめちゃったのか…なにか問題ありなの?やめてよ。。
やめないで~。やめないで~。やめて~。…やめるのをやめて~。っていうやりとりを思い出した。。
(O橋K泉議員辞職会見より)
基、上記フローの、「4」で「2」に戻りたい、という話。
こういうの を使うのが通例みたいだけど、
今回はもっと軽く実現したい。
というわけで、コレ。
Flashから任意のJavaScriptを走らせる+結果を受け取る!
受け取り
var locationHash:String = String(ExternalInterface.call("function(){return location.hash}")); var categoryId:int = int(locationHash.substr(1));言うまでもないが、文字列として使うならint()は不要。
カテゴリー切り替え時
ExternalInterface.call("function(h){location.hash=h}",categoryId);こうしておくと、URLの最後に"#123"とかついて、他のページから戻ってきたとき受け取れる。
ここで、IEユーザーに朗報。
"swfobject.js"を使ってswfを配置すると、
var locationHash:String = String(ExternalInterface.call("function(){return location.hash}")); trace(locationHash);が
nullになって誤作動してくれるぞorz...
ありがとうIE、Microsoftバンザ~イ┐(’Д`)┌
"AC_RunActiveContent.js"だとダイジョぶみたいだけど。
Comments