Deeplinking в гибких приложениях - PullRequest
       36

Deeplinking в гибких приложениях

1 голос
/ 24 августа 2011

В настоящее время я создаю гибкое приложение и хотел бы, чтобы глубокие ссылки давали хорошие 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.Просматривая документацию и файл index.html, сгенерированный flex, кажется, что теперь они используют последнюю версию swfobject в качестве предпочтительного способа встраивания swf-файлов.

Сказав это, swfobject haven 'Обновлен более года.Я также не уверен, намеревается ли автор обновить его.С другой стороны, мне не нравится, как adobe's history.js работает для создания глубоких ссылок.Такие ссылки, как http://site.com/#view=1, на мой взгляд, выглядят очень некрасиво.

В свете вышесказанного, какие библиотеки вы рекомендуете для встраивания SWF-файлов и создания глубоких ссылок в проекте flex 4.5?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Те 2 являются лучшими, и я рекомендую вам использовать оба. С учетом сказанного я попытаюсь отладить javascript / flex, чтобы понять, почему это не работает в IE9, и исправить код в обоих проектах с открытым исходным кодом, чтобы другие разработчики могли извлечь из этого пользу.

0 голосов
/ 20 августа 2012

Причина, по которой это происходит, в том, что Adobe никогда не обновлял history.js после выхода IE9. Там есть код для обработки некоторых ошибок IE7, который неправильно запускается.

Чтобы исправить ваш history.js, введите следующий код:

После строки 22 вставить:

ie9: false,

После строки 72 (что было строкой 71):

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

Это должно исправить.

...