2013-05-02 5 views
2

History.js는 현재 HTML5의 window.history에 비해 실질적인 이점이 있습니까? 우리는 HTML4 hashbang URL을 지원/폴백하는 데 관심이 없습니다.History.js와 HTML5 전용 모드의 window.history

History.js doesn't support anchors in pushState(), 반면에 window.history. 이 기능이 필요하기 때문에 HTML5 전용 모드에서 window.history 네이티브 대신 History.js를 사용해야하는 이유가 없으면 후자를 위해 대신 사용하겠습니다.

답변

2

네 - 자신의 웹 사이트에 그들이 말하는 :

조금 다르게 때로는 서로 다른 행동과 버그를 일으키는 모든 HTML5 브라우저에 대한 상호 호환 경험을 (그들은 모든 HTML5> 역사 API를 구현 제공 -> 역사 .js가이를 수정하여 HTML5 브라우저에서 경험할 수있는/예상되는대로 경험할 수 있음)

이러한 차이는 작고 검색하기에 충분하지 않았습니다. 소스 코드를 살펴 보았습니다. - 주요 사파리가 사파리에서 HTML5 기능을 수정하고있는 것으로 보입니다. 사파리 구현에는 두 가지 문제점이 있습니다. 하나는 history.back이 history.hash에 의해 설정된 hash.h 상태로 돌아 가지 않고 history.replaceState로 교체되는 것입니다.

두 번째는 바쁜 사파리가 상태 변경을 적용하지 못할 때입니다.

관련 History.js 소스 코드 :

History.bugs = { 
     /** 
     * Safari 5 and Safari iOS 4 fail to return to the correct state once a hash is replaced by a `replaceState` call 
     * https://bugs.webkit.org/show_bug.cgi?id=56249 
     */ 
     setHash: Boolean(!History.emulated.pushState && navigator.vendor === 'Apple Computer, Inc.' && /AppleWebKit\/5([0-2]|3[0-3])/.test(navigator.userAgent)), 

     /** 
     * Safari 5 and Safari iOS 4 sometimes fail to apply the state change under busy conditions 
     * https://bugs.webkit.org/show_bug.cgi?id=42940 
     */ 
     safariPoll: Boolean(!History.emulated.pushState && navigator.vendor === 'Apple Computer, Inc.' && /AppleWebKit\/5([0-2]|3[0-3])/.test(navigator.userAgent)), 

그래서 내가 당신의 결정이 내려 사파리 5, 사파리 IOS 4

+0

에 대한 관심 여부에 오는 생각은 유용한 연구 주셔서 감사합니다. 사파리 버그는 우리를위한 딜 브레이커가 아니므로 우리는 네이티브'window.history'를 고수하고 있습니다. 그러나 브라우저의 차이점이 있습니다 (가장 주목할만한 것은 [window.onpopstate가 호출 될 때]입니다) (http://stackoverflow.com/questions/3700440/html5-onpopstate-on-page-load)) 그래서 우리는 그것들을 코드화해야했다. – jamix

관련 문제