Flash(或AJAX)的浏览器历史记录

时间:2008-11-05 20:57:36

标签: ajax flex flash actionscript-3 browser-history

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

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

我知道Flex历史记录管理器,但想知道是否有任何好的替代方案需要考虑。也会对一般的AJAX解决方案或最佳实践感兴趣。

5 个答案:

答案 0 :(得分:4)

SWFAddress已被广泛使用和测试。它使得处理Flash中的深层链接几乎是微不足道的(给你提前计划)。它提供了一个JS和AS库,它们协同工作,使整个过程非常简单。你想看看像AJH这样的RSH。

答案 1 :(得分:2)

对于AJAX,像Really Simple History这样的东西很棒。

答案 2 :(得分:2)

我曾使用swfadress作为一些小东西。

答案 3 :(得分:0)

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

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

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

答案 4 :(得分: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'事件设置事件处理程序,以根据新值的相应情况做出相应的响应。该方法适用于超级简单的情况。