我知道关于这个主题的帖子很少
然而,我想以略微不同的方式提出这个话题:
我如何知道用户是从特定页面回来的,比如/product_pages/3
我使用骨干作为部件,我希望跟踪用户历史记录,它建立在RoR应用程序之上。我想知道用户是否从特定页面返回的原因是保持主干表单填充用户最初输入的值,但是如果用户来自其他页面,比如/provider_pages/14
,那么我会喜欢清除表单值。
尝试解决方案:
HTML5历史记录在浏览器中并不持久(甚至在FF和Chrome之间),并且尝试过它并不是解决此问题的最佳解决方案。 Backbone历史记录不起作用,因为它只跟踪Backbone应用程序,每当用户走出主干应用程序,Backbone.history失去状态; RoR请求也不是解决方案,假设大多数用户将单击后退按钮返回表单/搜索结果,并且“后退”按钮不会触发新请求:)
所以我对这个问题的解决方案感到有些困惑。
以下是代码:
表格:
<ul id="formfields">
<li>
<label>Driver type
<select id="driver-type" name="driver-type" class="ddl jqrequired">
options...
</select></label>
</li>
<li>
<label>Postcode
<input type="text" name="postcode" id="postcode_with_suburbs" style="width:207px" class="jqrequired postcode-with-suburb"></label>
</li>
<li id="date_insurance_required_section">
<label>Date insurance required
<input type="text" name="date_insurence_required" id="date_insurance_required" style="width:207px" class="jqrequired"></label>
<span style="display:none;" id="renewalDate"></span>
</li>
<li id="car-insurers-section">
<label>Your current car insurer (if applicable)
<input type="text" id="car-insurers" style="width:220px" class="ddl clearfix" class="jqrequired" placeholder="Please enter current insurer">
</label>
</li>
etc etc etc.....
通过获取请求在主干端设置值:and I assume here is the place where I need to keep track of users that are coming back
$("#car-insurers").val(results.Insurer);
$("#renewal_date").val(results.RenewalDate);
$("#date_insurence_required").val(results.InsuranceRequired);
$("#renewal-type").val(results.RenewalType);
$("#renewal-amount").val(results.RenewalAmount);
$("#driver-type").select2("val", results.DriverType);
$("#postcode_with_suburbs").val(results.Postcode);
$("#email").val(results.EmailAddress);
if (results.EmailSend == "on") {
$('#email-consent').prop('checked', true);
}
答案 0 :(得分:1)
一些提示,
为服务器的每次访问向Cookie写入最后一个路径&gt;时间戳。
将访问历史记录写入localStorage(大多数现代浏览器都支持此功能)