2013-06-28 65 views
2

當用戶點擊收件箱中的鏈接時,我想將鏈接相關的消息標記爲seen趕上超鏈接點擊使用JavaScript(或jQuery)?

SO也有此功能,
如果有人回覆我的文章,SO顯示了一些事情發生在我的文章。
當我點擊收件箱消息並訪問帖子後,SO不再顯示通知標記。

我猜測每次用戶訪問任何問題頁面時,訪問某個問題的用戶是否收到收件箱消息都太昂貴了。
我不知道是否有可能趕上clicking-link在收件箱頁面,這樣我就可以在引擎蓋下發送Ajax請求將郵件標記as seen

希望我的問題是清楚的。

+0

是的,這是可能的。你有什麼嘗試?你有什麼麻煩?提示:谷歌東西像jQuery手柄鏈接點擊 – SLaks

+0

這是明確的stackoverflow?或者只是想處理被點擊的鏈接? – abc123

+0

「*每次用戶訪問任何問題頁面時,如果訪問用戶的問題是否收到收件箱消息,測試費用太高*」 - 您爲什麼會這麼猜測?當然,你必須這樣做才能向他顯示信息。 – Bergi

回答

1

爲每個單擊的消息添加一個自定義數據屬性。我不知道你是如何顯示的消息,但在這個例子中,我們將使用一個跨度:

<span class="message">Some Message</span> 

而且JS:

$(".message").click(function() { 
    $(this).data("visited", true); 
}); 

然後你就可以檢查跨度,看看他們是否已經被訪問過。如果你仍然想要進行AJAX調用,那麼你可以簡單地在點擊處理程序中添加一個AJAX事件。

0

我假設你在消息表上有某種'status'字段來區分'Read'和'Unread'。

如果你問如何未讀郵件的數量有效地存儲在一個收件箱中,但不運行在每個頁面加載查詢,這可以很容易地通過設置$ _SESSION變量來實現:

$_SESSION['unread_messages'] = 2; 

在此之後變量已設置,您可以定期檢查(每5分鐘左右)以在合理的窗口內保持最新狀態。當單擊並閱讀消息時,您將從此值中減1或重新查詢未讀消息的數量。

如果您詢問如何更新數據庫和用戶界面,有兩種主要方法可以解決這個問題。這將取決於用戶點擊郵件時腳本當前發生的情況。您是否提出了加載消息的AJAX請求,或者該鏈接是否會將用戶帶到不同的頁面?

如果在單擊消息時發出AJAX請求,只需在AJAX請求中調用的腳本還將該消息標記爲已讀(在數據庫中),然後使用JavaScript將任何UI更新爲當前頁面(例如刪除被點擊的消息上的粗體文本)。

如果單擊消息重定向到顯示整個消息的其他頁面,則可以在該頁面加載時將消息標記爲已在數據庫中讀取。