2011-08-24 61 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

相關問題