在Coldfusion中创建像Object这样的Javascript历史记录

时间:2010-01-05 09:28:49

标签: java javascript coldfusion

我想为我的网站创建一个历史对象,它应该与Javascript历史对象类似。

我想使用此对象为我的网站创建上一个/下一个链接。 Javascript历史对象的问题在于它基于Window对象,而不是特定于网站的对象。使用此对象单击“Prvious”链接可能会导致我离开我的网站。

在Coldfusion中创建历史对象的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

查看听起来像“如何让用户更好地浏览我的网站的全球问题?”我可以得到三个重要的答案:

  1. 明显的导航又称主菜单。特别是,当你有很多链接时。解决方案可能有所不同:纯链接,标签,下拉菜单等。
  2. 使用breadcrumbs。人们应该能够升级(尽管并不总是“后退”行动)。
  3. 历史。实现自定义历史记录对于电子商店来说非常有用 - 以可靠和方便的方式显示以前查看的内容。
  4. 请注意,历史记录是任务#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>