1

为 Flash(或 AJAX)网站启用浏览器历史记录的最佳工具/实践是什么?我想既定的做法是设置和读取对 URL 的哈希添加,例如

http://example.com/#id=1

我知道 Flex History Manager,但想知道是否有任何好的替代方案可供考虑。也会对通用 AJAX 解决方案或最佳实践感兴趣。

4

5 回答 5

4

SWFAddress已被广泛使用和测试。它使得在 Flash 中处理深度链接几乎是微不足道的(假设您提前计划)。它提供了一个 JS 和 AS 库一起工作,使整个过程非常简单。你会想看看像 RSH for AJAX 这样的东西。

于 2008-11-06T14:58:20.113 回答
2

对于 AJAX,像真正简单的历史这样的东西很棒。

于 2008-11-05T21:02:18.957 回答
2

我用swfadress做一些小东西。

于 2008-11-05T21:20:33.553 回答
0

这似乎有点迂回,但我目前正在使用 dojo 框架。当我的 UI 主要是 JS/HTML 时,有一个 dojo.back 非常有用。现在我已经使用 flex 来获得更多功能、流畅的动画和浏览器稳定性,我唯一需要继续使用的就是返回 URL。

FlexBuilder 似乎在默认项目中拥有自己的浏览器历史记录。

此外,Flex 3 Cookbook 还提供了使用 mx.managers.HistoryManager 创建您自己的自定义历史管理的秘诀。我计划有一天尝试一下,以消除我们对 dojo.back 的依赖,但还没有时间。

于 2008-11-06T00:53:49.847 回答
0

我推出了自己的解决方案,这些解决方案非常简单,如下所示:

(function() {
  var oldHash, newHash;

  function checkHash() {
    // Grab the hash
    newHash = document.location.hash;

    // Check to see if it changed
    if (oldHash != newHash) {

      // Trigger a custom event if it changed,
      // passing the old and new values as
      // metadata on the event.
      $(document).trigger('hash.changed', {
        old: oldHash,
        new: newHash
      });

      // Update the oldHash for the next check
      oldHash = newHash;
    }
  }

  // Poll the hash every 10 milliseconds.
  // You might need to alter this time based
  // on performance
  window.setInterval(checkHash, 10);

})(jQuery);

然后,您只需要让“hash.changed”事件的事件处理程序根据新值做出相应的响应。该方法适用于超级简单的情况。

于 2009-01-01T23:51:23.373 回答