全Flash的网站在导航上存在一个问题:浏览器提供的前进和后退等浏览历史相关的功能不能整合到Flash站点中。
FI解决了这个问题。FlashGuru在FlashForward 2005上也提到了这个问题的解决办法。
在这里总结一下。原理就是使用框架网页,将主Flash文件(如main.swf)放在主框架(如content.htm)中,另一个框架文件(如history.htm)用来记录浏览历史。要解决的两个问题:
- 在Flash网站中发生页面转换的时候,通知框架中的网页更新。(浏览器的前进、后退 & content.htm 改变 history.htm)
- 框架中的网页更新后,通知Flash网站相应的更新。(history.htm 改变 content.htm)
不直接在Flash中更新页面内容,而是等到框架页加载后再来更新。这样无论是用户在网站中通过导航发生页面跳转还是使用浏览器的前进或后退功能都可以对应到正确的Flash内容。
原理弄清楚就好办了。第一个问题,在main.swf文件用getURL("history.htm?param=value", "history")来更新history.htm。第二个问题,history.htm刷新后必须把得到的参数再对应回main.swf。最简单的办法是用到localConnection对象。这个对象可以在不同的Flash之间通讯,而不需要通过fscommand()或者Javascript。在history.htm中放一个history.swf,得到网页参数后通过localConnection对象来与main.swf通讯。
这样,一个整合了浏览器功能的Flash导航就搞定了。具体的代码可以从FlashGuru那里下来研究。











