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

问题描述:

为Flash(或AJAX)网站启用浏览器历史记录的最佳工具/练习是什么? 我猜的一贯做法是设置和读取哈希除了URL像Flash(或AJAX)的浏览器历史记录

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

我知道Flex的历史记录管理器的,但如果有需要考虑什么好的办法想知道。也会对一般的AJAX解决方案或最佳实践感兴趣。

我用swfadress为一些小东西。

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

这看起来有点迂回,但我目前正在使用dojo框架。当我的UI主要是JS/HTML时,有一个dojo.back非常有用。现在我已经为了获得更多的力量,流畅的动画和浏览器稳定性而进行了弯曲,我需要继续使用的唯一东西就是后面的URL。

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

另外,Flex 3 Cookbook有一个使用mx.managers.HistoryManager创建自己的自定义历史管理的菜谱。我有计划在某天试一试,以消除我们对dojo.back的依赖,但还没有时间。

SWFAddress已被广泛使用和测试。它使得它几乎微不足道(因为你提前计划)来处理Flash中的深层链接。它提供了一个JS和AS库,它们一起工作,使整个过程非常安全。你会想看看像RSH为AJAX的东西。

我滚我自己的解决方案,是超简单的是这样的:

(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”事件价值是。这个方法在超级简单的情况下会起作用。

+0

有趣。你可以在某个地方发布演示吗? – pixeline 2010-02-12 21:11:11