Flashで余所のページに飛んで戻ったときに最初っから表示しないようにする

例えば商品紹介Flashで、
1.Flash内でカテゴリーを選択
2.カテゴリーごとの商品が一覧表示される
3.商品を選ぶと商品購入ページに飛ぶ
4.ブラウザの戻るボタンでもどる
5.Flashが最初から再生される
6.再度カテゴリーを選択
...
これがまあ普通だった訳だが。
deep linking なる手法で解決する方法が発明されていたようで。

初めて見たのは、…って、紹介しようとしたら、かわっとるがや。
やめちゃったのか…なにか問題ありなの?やめてよ。。

やめないで~。やめないで~。やめて~。…やめるのをやめて~。っていうやりとりを思い出した。。
(O橋K泉議員辞職会見より)

基、上記フローの、「4」で「2」に戻りたい、という話。
こういうのLink を使うのが通例みたいだけど、
今回はもっと軽く実現したい。
というわけで、コレ。
Flashから任意のJavaScriptを走らせる+結果を受け取る!Link

受け取り
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"だとダイジョぶみたいだけど。

— posted by たか at 07:29 pm   pingTrackBack [0]

この記事に対するコメントはありません

T: Y: ALL: Online:
ThemeSwitch
Created in 0.0667 sec.
prev
2017.9
next
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
 
blogBar
Firefox3 Meter