1

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

我们的应用程序托管在 中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 选项pushState: true,希望它能有所帮助,但现在example.com/photo/<ID>在 IE9 中访问时,页面将被重定向到example.com/#photo/<ID>,并实际显示example.com/index.php.

我想(?)如果我们将事件挂钩 URL 更改为类似的东西,这可能不是问题example.com/photo/view/<ID>,但是我们不能触及那部分。

无论如何,无论有没有 pushState example.com/photo/<ID>example.com/#photo/<ID>是否可以example.com/photo/#<ID>在 IE9 下按预期工作?

4

0 回答 0