2010-01-05 66 views
0

我想爲我的網站創建一個歷史記錄對象,它應該類似於Javascript歷史記錄對象。在Coldfusion中創建類似於Object的Javascript歷史記錄

我想使用此對象爲我的網站創建上一個/下一個nevigational鏈接。 Javascript歷史對象的問題在於它基於Window對象,而不是網站特定的。使用這個對象點擊「上一頁」鏈接可能會導致離開我的網站。

在Coldfusion中創建歷史對象的最佳方法是什麼?

+0

問題在哪裏? – Henry 2010-01-05 09:41:03

+0

你想阻止人們使用歷史按鈕離開你的網站? – 2010-01-05 09:58:32

+0

是的,如果我可以阻止人們離開我的網站,這將是偉大的。 – user160820 2010-01-05 10:04:14

回答

0

防止人們離開您的網站是一個跛腳和煩人的事情要做。你有這樣做的好理由嗎?

+0

因爲這個上一個鏈接是在我的網站。用戶通常希望通過下一個和上一個鏈接在站點內導航。 – user160820 2010-01-05 11:16:25

2

看着全球性的問題,聽起來像「我怎樣才能讓用戶上網我的網站更好?」我可以三個重要的答案:

  1. 明顯的導航又名主菜單。特別是當你有很多鏈接的時候。解決方案可能會有所不同:簡單鏈接,選項卡,下拉菜單等。
  2. 使用breadcrumbs。人們應該能夠升級(儘管它並不總是「返回」行動)。
  3. 歷史。實施自定義歷史記錄對於電子商店來說非常有用 - 以可靠和方便的方式顯示先前查看的內容。

請注意,歷史任務#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)標識的數據庫中並在用戶登錄時將其恢復。

請記住,強烈建議在閱讀/書寫時使用鎖定的密碼爲

+2

讀取會話變量時使用鎖定幾乎不再需要,除非您正在處理競爭條件鎖定以寫入會話,否則無需鎖定。 – ale 2010-01-05 14:05:34

0

您是否正在使用您網站上的鏈接/按鈕來充當後退按鈕?

如果是這樣,如果history-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> 
+0

是的,我正在使用我的網站上的鏈接。 你能給我寫個例子嗎? – user160820 2010-01-06 09:55:15

相關問題