IE中的骨干路由+ URL重写

时间:2012-10-19 11:44:02

标签: javascript internet-explorer backbone.js pushstate backbone-routing

在处理Backbone路由时,我遇到了一个特殊的问题。

我们的应用程序正在example.com/photo/index.php中托管,我们想在其上挂钩一个事件,触发后会在地址栏中显示为example.com/photo/<ID>。以下是我们设置重写规则和路由设置的方法:

RewriteRule ^/photo/([0-9]+)?$ /photo/index.php/photo/$1 [L]

Backbone.Router.extend:

routes: {
    'photo/:ID': 'viewPhoto'
},

路由器实例化后:

$(function() {
    Backbone.history.start({
        pushState: 'pushState' in window.history,
        root: '/'
    });
});

这在Firefox / Chrome / Safari中效果很好,但在IE9中你必须使用example.com/photo/#photo/<ID>访问事件挂钩,这不是很酷。

所以我们尝试在(pushState: true)上切换pushState选项并希望它可以提供帮助,但现在每当访问IE9中的example.com/photo/<ID>时,页面将被重定向到example.com/#photo/<ID>,实际上显示example.com/index.php

的内容

我想(?)如果我们将事件挂钩到example.com/photo/view/<ID>这样的事件,这可能不是问题,但我们无法触及该部分。

是否有任何方式使example.com/photo/<ID>example.com/#photo/<ID>example.com/photo/#<ID>在IE9下按预期工作,是否有pushState?

0 个答案:

没有答案