我可以在IE上使用onpopstate吗?

dou*_*ack 2 internet-explorer browser-history

我目前(很高兴)使用jquery将ajax请求函数绑定到非IE浏览器中的window.onpopstate事件.但是,IE从未触及我的doAjax功能.

    // Bind a function to the popstate event to execute ajax requests
    // this allows request to occur on back/fwd browser navigation 
    window.onpopstate = doAjax;
Run Code Online (Sandbox Code Playgroud)

任何人都知道是否有办法使IE 8/9以某种方式玩得很好?

dou*_*ack 8

我在已经抵达的解决方案是结合两者onpopstateonhashchange所需的处理程序.

    // Popstate: load ajax
    window.onpopstate = handlePageWipe;

    // And onhashchange for IE
    if( jQuery.browser.msie ) window.onhashchange = handlePageWipe;
Run Code Online (Sandbox Code Playgroud)

我正在使用History jquery库更新url,因为我对页面进行了ajax更改.不幸的是,并且可以预见,IE还没有赶上,似乎没有办法改变JS的URL.历史可以追溯到在IE中更新url的哈希状态,所以这最初的目标是将url状态更改绑定到IE中的处理程序.

当然这会打开另一种蠕虫病毒,因为我现在必须处理网址更改和哈希更改.好吧,好吧......

编辑: 正如@linus指出的那样,我们应该慈善并避免浏览器检测,以便为IE提供改革的机会.