2013-05-14 93 views
1

我的網站有大約50張背景圖片。我期望做的是每次訪問隨機向用戶展示不同的用戶。我的意思是,他們將在訪問期間以相同的背景圖像瀏覽網站。每次訪問更改背景圖片

當他們關閉瀏覽器並重新訪問或返回並稍後訪問後,他們會看到一個新的隨機背景圖像。不需要在他們之前的背景圖像上保存任何內容,只需每次新訪問該網站時隨機添加一個。

不確定這可以用C#,Javascript,JQuery或CSS完成。

編輯:我使用ASP.net 4.0 C#爲我的web應用程序。謝謝

+2

瞭解cookie或localStorage的。 – epascarello 2013-05-14 02:24:07

+1

如果是隨機的,隨便挑一個。 – Xaqron 2013-05-14 02:28:43

+1

@epascarello - '不需要保存任何他們以前的背景圖片' – 2013-05-14 02:28:58

回答

1

保留在會話中。當它還沒有進入會議時,隨機挑選它,只要它們在您的網站上,它就會保持不變 - 下一次他們回來時,他們會得到一個新的。

例如(我的C#是有點生疏):

public getBackground (HttpSessionState session) { 
    String bg = (string) session["session.randomBG"]; 
    if (bg == null) { 
     // pick a random BG & store it. 
     bg = "pick one"; 
     session["session.randomBG"] = bg; 
    } 
    return bg; 
} 

希望這有助於!

+1

這對我來說隨機圖像使用一些自定義代碼。 – 2013-05-14 19:07:02

+0

謝謝,太好了。 – 2013-05-15 00:39:32

0
var list = [ 
    "/images01.png", 
    "/images02.png", 
... 
]; 

/*background url*/ = list[Math.floor(Math.random()*list.length]; 
+2

這在訪問期間不會保留相同的背​​景。 – 2013-05-14 02:37:35

0

確實有可能。我將在這裏使用僞代碼向您展示如何完成。 Java中很快會出現例子。

在每一頁的開頭:

StartSession() 
If ! SessionVariable[myBackground] then 
    x=Randomize 50 
    SessionVariable[myBackground]="image0" + x + ".jpg" 
endif 

<style> 
body {background-image:url(SessionVariable[myBackground];} 
</style> 

確保您使用的樣式標籤在適當情況下。 SessionVariable [myBackground]是用戶創建的。在PHP它應該是這樣的:

$_SESSION['myBackground'] 

最良好的祝願,

2

不要使用cookies作爲註釋說明。這隻會爲發送到服務器的標頭消息增加額外的帶寬。

取而代之的是,在瀏覽器中使用本地存儲來保存最後使用的圖像。新會話開始時,增加此值,並顯示下一個圖像。

我在項目上使用了jStorage,它工作正常。

您可以將當前顯示的圖像保存在其瀏覽器存儲中,也可以保存一個會話ID。稍後,您可以檢查會話ID是否已更改。如果是這樣,則更改爲不同的圖像。

var image = $.jStorage.get("image", 0); 
var session_id = $.jStorage.get("session", "put current session id here"); 

if(session_id != "current session id") 
{ 
    image = (image < 50) ? 0 : image+1; 
    $.jStorage.set("image",image); 
    $.jStorage.set("session","current session id"); 
} 

// use image to set background 

編輯:

不要把這個JavaScript在每個網頁。相反,將它放在一個ASP.NET頁面中,該頁面作爲Javascript內容類型進行響應,並通過頁面的標題加載它。這樣,瀏覽器上的頁面緩存不會影響會話更改時的腳本。

+0

當'sessionStorage'在瀏覽器中不可用時,您認爲'jStorage'使用了什麼? – Ian 2013-05-14 02:55:53

+1

爲什麼要增加JStorage的重量,複雜性和可能的​​兼容性問題 - 當會話ID將是什麼,30多個字節?我會在這裏遵循KISS原則。 – 2013-05-14 03:10:00

0

試試這個功能:

/** 
* Change background image hourly. 
* Name your images with 0.jpg, 1.jpg, ..., 49.jpg. 
*/ 
function getBackground2() { 
    var expires = 3600000, 
     numOfImages = 50, 
     seed = Math.round(Date.now()/expires % numOfImages); 
    return '/path/to/background/' + seed + '.jpg'; 
}