【发布时间】:2012-05-03 00:10:16
【问题描述】:
我会先研究一下,但没有解决方案可以解决看起来应该是简单的 JQM 修改的问题。
我有一个葡萄酒评论网络应用程序,它具有以下视图用户流程: http://5buckchuck.com/
葡萄酒类型 > 酒单 > 葡萄酒详情 > 葡萄酒评论(通过 django backto 重定向)> 葡萄酒详情从评论更新
我想要发生的是,当用户按下后退按钮时,它应该返回到酒单。当前发生的是 Wine Detail 视图被重新加载。需要按三下才能回到酒单。 :-(
我解决这个问题的想法有两个:
-
如果历史堆栈中的最后一项是 Wine Review,则拼接历史堆栈中的最后 3 个项目。我很难自省最后一个历史对象以获取 pageURL。我感觉这个解决方案有点太脆弱了。
var last_hist = $.mobile.urlHistory.getActive(); last_hist.data.pageURL; -
第二个想法是覆盖后退按钮的行为,以便 Wine Detail 视图中的后退按钮始终返回到 Wine 列表视图
$('div#wine_detail').live('pageshow',function(event, ui){ $("a.ui-btn-left").bind("click", function(){ location.replace("/wines/{{wine.wine_type}}/#"); }); });
可能有更好的方法来做到这一点,但我有点没有想法。
更新:
所以我继续破解这个,结果有点微不足道。我发现这是我基本上需要工作的:window.history.go(-3)
从控制台它完全符合我的需要。
所以我尝试将它绑定到后退按钮,如下所示:
$('div#wine_detail').live('pageshow',function(event, ui){
var last = $.mobile.urlHistory.stack.length - 1;
var last_url = $.mobile.urlHistory.stack[last].url;
var review_url = /review/g;
if (last_url.match(review_url) )
{
$('div#wine_detail a.ui-btn-left').bind( 'click', function( ) {
console.log("click should be bound and going back in time...")
window.history.go(-2);
});
}
else
{
console.log('err nope its: ' + last_url);
}
});
没有骰子,交易中断了……
【问题讨论】:
标签: javascript django jquery-mobile browser-history