我有一个可以识别任意数量参数的 Sammy 路由。路线如下所示:
get(/^\/(?:\?[^#]*)?#page\/?((?:[^\:\/]+\:[^\:\/]+\/?)*)$/g, function() {
var params = {};
var splat = this.params.splat[0];
var re = /([^\:\/]+)\:([^\:\/]+)/g;
match = true
while(match = re.exec(splat)) {
params[match[1]] = match[2];
}
self.loadData(params);
});
此代码有效。它的作用是识别#page/param1:value1/param2:value2/
任意数量参数的模式路径。我的loadData
函数有许多这些参数的默认值。我相信页面的实际加载没有问题,因为它可以在许多浏览器的许多计算机上 100% 运行。但是,它在我的 Android 浏览器和我朋友的 Mac 的 Safari 和 Chrome 上(在我的 PC 的 Chrome 上工作)有奇怪的行为。我注意到这些是 Webkit 浏览器。
行为是路由在第一个 URL 更改时正确运行,然后不会在下一个 URL 更改时运行(尽管浏览器栏中的 URL 确实总是在更改),然后它会在第三个 URL 更改时再次运行,并获胜不是第四个。也就是说,它每隔一段时间工作一次。这对我来说似乎是非常奇怪的行为,我不知道如何调试它。对于某些链接,我能够运行 hack,以便在单击时将窗口位置设置为 URL,并使用runRoute('get', url);
. 必须为页面上的每个点击事件添加它是不切实际的,而且这并不能真正解释所有 URL 更改。我可以做些什么来调试为什么每次 URL 更改时我的路由都没有运行?