【问题标题】:Deeplinking in flex applications弹性应用程序中的深度链接
【发布时间】:2011-08-24 00:50:42
【问题描述】:

我目前正在构建一个 flex 应用程序,并希望允许深度链接生成漂亮的 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 这样的网址看起来很丑。

鉴于上述情况,您推荐哪些库用于在 flex 4.5 项目中嵌入 swf 文件和深度链接?

【问题讨论】:

  • 老实说,每当我不得不进行深度链接时,我都是手动完成的。我创建了一种导航委托模式,只使用 BrowserManager 更新片段,导致根视图评估片段,然后将任何子片段委托给子视图。 (对于每个关心片段的后代视图来说,无穷无尽)。当然,这里的问题是,至少根据我的经验,深度链接通常是产品设计师的事后想法,而不是在初始客户端架构时构建的。
  • 为了记录,SWFObject 正在更新到 2.3。希望它会在未来几个月内发布。

标签: apache-flex swfobject deep-linking swfaddress


【解决方案1】:

这两个是最好的,我建议你两个都用。话虽如此,我会尝试调试 javascript/flex 以了解为什么这在 IE9 中不起作用并修复两个开源项目的代码,以便其他开发人员可以从中受益。

【讨论】:

  • 不知道为什么,但我删除了整个项目(反正没做多少)并从头开始。 Swfaddress 2.4 和 swfobject 2.2 现在似乎运行良好。
【解决方案2】:

发生这种情况的原因是 Adob​​e 在 IE9 出现后从未更新 history.js。里面有代码可以处理一些被错误触发的 IE7 错误。

要修复您的 history.js,请插入以下代码:

在第 22 行之后插入:

ie9: false,

第 72 行之后(第 71 行是什么):

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

这应该可以解决它。

【讨论】:

  • 你能告诉我我必须在哪里进行第二次修复吗?在我的第 71 行,我有...... else if (useragent.indexOf("safari") != -1) { browser.safari = true; browser.version = parseFloat(useragent.substring(useragent.indexOf('safari') + 7)); }
猜你喜欢
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多