2011-08-24 65 views
1

我目前正在构建一个柔性应用程序,并希望允许深层链接生成漂亮的URL,例如http://site.com/#/account/settings等。柔性应用程序中的深层链接

我看过swfaddress 2.4和swfobject 2.2来嵌入swf并提供深层链接。到目前为止,所有的工作都在Firefox和Chrome上运行但是,在Internet Explorer 9中,后退按钮和历史记录功能不起作用,这非常令人沮丧。

有趣的是,Flex示例文件http://www.asual.com/swfaddress/samples/flex/在IE9中完美地工作。经过进一步检查,似乎他们正在使用ac_OETags.js文件来嵌入其swf。阅读文档以及由flex生成的index.html文件,似乎他们现在正在使用最新版本的swfobject作为嵌入swf文件的首选方式。

话虽如此,swfobject尚未更新超过一年。我也不确定作者是否打算更新它。另一方面,我不喜欢adobe的history.js用于深层链接的方式。在我看来,像http://site.com/#view=1这样的网址看起来非常难看。

鉴于上述情况,您推荐什么库将swf文件和深度链接嵌入到flex 4.5项目中?

+0

老实说,我不得不做深度链接,我做了手动的方式。我创建了一种导航委托模式,只需使用BrowserManager更新片段,使根视图评估片段,然后将任何子片段委托给子视图。 (对于关注片段的每个后代视图,无穷无尽)。 这里的问题当然是,通常至少在我的经验中,深度链接是产品设计师的事后考虑,而不是在最初的客户端体系结构时构建的。 –

+0

为了记录,SWFObject正在更新到2.3的过程中。希望它会在未来几个月内发布。 – pipwerks

回答

1

这两个是最好的,我建议你使用两个。有了这个说法,我会尝试调试javascript/flex,看看为什么这不能在IE9中工作,并修复这两个开源项目上的代码,以便其他开发人员可以从中受益。

+0

不知道为什么,但我删除了整个项目(无论如何都没有完成),并从头开始。 Swfaddress 2.4和swfobject 2.2现在似乎很好玩。 – F21

0

发生这种情况的原因是Adobe在IE9发布后从未更新history.js。那里有代码来处理一些IE7错误,这些错误被错误地触发。

要解决您的history.js插入下面的代码:

线22插入后:

ie9: false, 

线72(什么是线71)后:

else if (browser.version == 9) 
{ 
    browser.ie = false; 
    browser.ie9 = true; 
} 

应修理它。

+0

你能告诉我我必须做第二次修复吗?在我的第71行中,我有...... else if(useragent.indexOf(“safari”)!= -1){}} browser.safari = true; browser.version = parseFloat(useragent.substring(useragent.indexOf('safari')+ 7)); } – user817057

相关问题