1

我的网站有大约 50 张背景图片。我要做的是为每次访问随机向用户展示不同的用户。我的意思是,他们将在访问期间使用相同的背景图片浏览网站。

在他们关闭浏览器并重新访问或稍后返回访问后,他们会看到一个新的随机背景图像。不需要在他们以前的背景图像上保存任何内容,只需为每次新访问该站点时随机一个新的。

不确定这是否可以使用 C#、Javascript、JQuery 或 CSS 完成。

编辑:我正在为我的网络应用程序使用 ASP.net 4.0 C#。谢谢

4

5 回答 5

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 放置在每个网页中。相反,将其放置在作为 Javascript 内容类型响应的 ASP.NET 页面中,并通过页面的标题加载它。这样,当会话更改时,浏览器上的页面缓存不会影响脚本。

于 2013-05-14T02:35:40.570 回答
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;
}

希望这可以帮助!

于 2013-05-14T02:30:30.327 回答
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']

最好的祝愿,

于 2013-05-14T02:31:09.457 回答
0
var list = [
    "/images01.png",
    "/images02.png",
 ...
];

/*background url*/ = list[Math.floor(Math.random()*list.length];
于 2013-05-14T02:28:05.253 回答
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';
}
于 2013-05-14T03:06:42.503 回答