在处理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?