我想为我的网站创建一个历史对象,它应该与Javascript历史对象类似。
我想使用此对象为我的网站创建上一个/下一个链接。 Javascript历史对象的问题在于它基于Window对象,而不是特定于网站的对象。使用此对象单击“Prvious”链接可能会导致我离开我的网站。
在Coldfusion中创建历史对象的最佳方法是什么?
答案 0 :(得分:2)
查看听起来像“如何让用户更好地浏览我的网站的全球问题?”我可以得到三个重要的答案:
请注意,历史记录是任务#3,而不是1或2.解释所有这些的原因是您的历史记录不应为#1(绝对)和#2(有时可能) )。
基本上历史可以通过两种方式存储:仅适用于当前会话(适用于任何用户)和会话之间(通常适用于已登录的用户)。
最简单实现第一种方式的方法是使用ColdFusion会话。在创建会话时(onSessionStart(),如果使用Application.cfc)初始化容器,我会使用该数组。
考虑以下样本:
<cfscript>
session.history = [];
</cfscript>
当用户打开新页面时(即使在新标签中 - 启动新的浏览器历史记录) - 将页面信息推送到容器中(页面至少应包含链接和标签种类):
<cfscript>
page = {};
page.link = "/index.cfm?product=100";
page.label = "Product Foo";
ArrayAppend(session.history, page);
</cfscript>
最后,页面模板中的某个地方循环遍历此数组并显示链接:
<cfloop array="#session.history#" index="page">
<div><a href="#page.link#">#HTMLEditFormat(page.label)#</a></div>
</cfloop>
显然,如果你想显示上一个/下一个链接,你应该修改存储历史记录的方式,也可以保持当前页面位置(在数组中) - 选择上一个和下一个元素。虽然作为用户我不会发现这样的功能非常有用。
最后,如果要在会话之间存储历史记录,只需将此数据集写入由用户标识(fk)标识的数据库中,并在用户登录时将其还原。
请记住,强烈建议您在阅读/写作时强烈建议使用锁定。
答案 1 :(得分:0)
防止人们离开您的网站是一件蹩脚而烦人的事情。你有充分的理由这样做吗?
答案 2 :(得分:0)
您是否使用网站上的链接/按钮作为后退按钮?
如果是这样,如果历史记录-1不包含您的域名,您可以使用javascript隐藏您网站中的“上一个”链接/按钮。
编辑 - 由于安全性,您无法使用历史记录对象,但您可以使用document.referrer。
<head>
<script language="javascript">
function showBackLink(){
var ref = document.referrer;
var fromThisDomain = ref.indexOf("yourdomain.com");
if(fromThisDomain > 0){ // your domain was found, show the link
document.getElementById("backLink").style.display = "";
}else{ // your domain was not found, hide the link
document.getElementById("backLink").style.display = "none";
}
}
</script>
</head>
<body onload="showBackLink();">
<a ID = "backLink" href = "javascript: history.go(-1);">prev</a>
</body>