我的網站有大約50張背景圖片。我期望做的是每次訪問隨機向用戶展示不同的用戶。我的意思是,他們將在訪問期間以相同的背景圖像瀏覽網站。每次訪問更改背景圖片
當他們關閉瀏覽器並重新訪問或返回並稍後訪問後,他們會看到一個新的隨機背景圖像。不需要在他們之前的背景圖像上保存任何內容,只需每次新訪問該網站時隨機添加一個。
不確定這可以用C#,Javascript,JQuery或CSS完成。
編輯:我使用ASP.net 4.0 C#爲我的web應用程序。謝謝
我的網站有大約50張背景圖片。我期望做的是每次訪問隨機向用戶展示不同的用戶。我的意思是,他們將在訪問期間以相同的背景圖像瀏覽網站。每次訪問更改背景圖片
當他們關閉瀏覽器並重新訪問或返回並稍後訪問後,他們會看到一個新的隨機背景圖像。不需要在他們之前的背景圖像上保存任何內容,只需每次新訪問該網站時隨機添加一個。
不確定這可以用C#,Javascript,JQuery或CSS完成。
編輯:我使用ASP.net 4.0 C#爲我的web應用程序。謝謝
保留在會話中。當它還沒有進入會議時,隨機挑選它,只要它們在您的網站上,它就會保持不變 - 下一次他們回來時,他們會得到一個新的。
例如(我的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;
}
希望這有助於!
這對我來說隨機圖像使用一些自定義代碼。 – 2013-05-14 19:07:02
謝謝,太好了。 – 2013-05-15 00:39:32
var list = [
"/images01.png",
"/images02.png",
...
];
/*background url*/ = list[Math.floor(Math.random()*list.length];
這在訪問期間不會保留相同的背景。 – 2013-05-14 02:37:35
確實有可能。我將在這裏使用僞代碼向您展示如何完成。 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']
最良好的祝願,
不要使用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內容類型進行響應,並通過頁面的標題加載它。這樣,瀏覽器上的頁面緩存不會影響會話更改時的腳本。
當'sessionStorage'在瀏覽器中不可用時,您認爲'jStorage'使用了什麼? – Ian 2013-05-14 02:55:53
爲什麼要增加JStorage的重量,複雜性和可能的兼容性問題 - 當會話ID將是什麼,30多個字節?我會在這裏遵循KISS原則。 – 2013-05-14 03:10:00
試試這個功能:
/**
* 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';
}
瞭解cookie或localStorage的。 – epascarello 2013-05-14 02:24:07
如果是隨機的,隨便挑一個。 – Xaqron 2013-05-14 02:28:43
@epascarello - '不需要保存任何他們以前的背景圖片' – 2013-05-14 02:28:58