webForumDet fria alternativet

Ny bakgrundsbild för varje besök.

JavaScript

13 svar · 568 visningar · startad av Okkido

Medlem sedan maj 20007 492 inlägg
Frågan#1

Hejsan,

har en sida där det ligger en bakgrundsbild i en div som laddas in via CSS. Jag vill att varje gång besökaren går in på sidan ska en ny bild laddas in. Alltså, navigerar besökaren runt på olika undersidor ska bakgrundsbilden ligga kvar, stänger besökaren ner webbläsaren och går in en timme, vecka, år senare ska det ligga en annan bakgrundsbild.
Om det sköts slumpmässigt eller i nån förbestämd turordning spelar ingen roll.

Är det möjligt? Hur löser man det?

mvh
Kid

Medlem sedan maj 20007 492 inlägg
#2

Hittade denna lösningen. Men den känns lite halvsnygg. Finns det något bättre sätt? Gärna slippa

<body onload="pickimage()">

och när jag tänker efter så vill jag helst av allt att den själv hämtar bilder från en viss mapp så att när företaget själv ska uppdatera sin hemsida med bilder slipper gå in i koden och lägga till och ta bort bilder.

Medlem sedan nov. 20016 480 inlägg
#3

och du vill inte lösa det med php?

Medlem sedan maj 20007 492 inlägg
#4

bassebhu skrev:

och du vill inte lösa det med php?

Gärna, hellre, men jag har ingen aning hur, och tänkte inte ens att det gick att lösa med php.

Kraven jag har är att det inte blir nån seg process med att slumpa bild och att jag fortfarande kan ha bilden som en bakgrundsbild och inte behöva köra img-tagg.

(det finns något plugin tilll wordpress för att köra egna php-script va?)

Medlem sedan nov. 20016 480 inlägg
#5

Hur många bilder handlar det om? Ett alternativ är att slumpa ut en siffra och sedan hämta bilden som heter så samt lagra det i en cookie med ett utgångsdatum. Ett annat alternativ är att hämta olika bilder beroende på tidpunkt på dygnet.

Medlem sedan okt. 20001 285 inlägg
#6

Kanske slumpa lite med javascript .. sätta en cookie för aktuell bild så att det alltid blir en ny bild .. sen document.getElementById('divnamn').className = 'cookiename';

Medlem sedan maj 20007 492 inlägg
#7

Hmm, jag har inte riktigt koll på nånting av det så lite mer hjälp på vägen hade varit bra :)

Medlem sedan maj 20007 492 inlägg
#8

Ingen som kan hjälpa mig mer på traven?
Jag kör ett annat cms nu, där jag inte kan köra egna php-script. Så helst någon javascript-lösning.

Medlem sedan okt. 20001 285 inlägg
#9

Prova det här..

<?php
function random_image()
{
	$image_dir = "/www/okkido/images";

	$ext = array();
	$ext[] = 'png';
	$ext[] = 'jpg';

	$file_list = array();
	$my_image_dir = opendir($image_dir);

	while (false !== ($file = readdir($my_image_dir)))
	{
		$file_info = pathinfo($file);
		if (in_array(strtolower($file_info['ext']),$ext)) {
			$file_list[] = $file;
		}
	}

	closedir($my_image_dir);

	if (count($file_list) > 0) {
		$image_number = time() % count($file_list);
		$image = 'images/'.$file_list[$image_number];
		?>
		<style type="text/css"><!--/*--><![CDATA[/*><!--*/
		body { background-image: url('<?=$image;?>');
		/*]]>*/--></style>
		<?php
	}
}
// Kalla på det så här i <head>
// <?php random_image(); ?> 
?>

Jag har klippt & klistrat ur egen kod så det är otestat :birp

Medlem sedan okt. 20001 285 inlägg
#10

Lol .. nu kom jag igång.. den här läser dock inte från någon mapp

<script type="text/javascript"><!--//--><![CDATA[//><!--
function random_image()
{
	/* fuels lightweight random image */
	var slump = Math.round(10*Math.random())
	document.write('<style type="text/css"><!--/*--><![CDATA[/*><!--*/')
	document.write('body { background-image: url(/images/background_'+slump+'.png);}')
	document.write('/*]]>*/--></style>')
}
random_image();
//--><!]]></script>

Vet inte ens om det fungerar :D .. jag tror det ..

Edit .. tog bort 2 fnuttar..

Medlem sedan maj 20007 492 inlägg
#11

Äsch, verkar som att det cms:et inte kan köra javacsript direkt i koden :(

Finns det någon annan lösning då?

Medlem sedan okt. 20001 285 inlägg
#12

hold .. working .. det där kastade jag ur mig för snabbt .. har gjort om det ..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	<head>
		<title>OKKIDO</title>
		<style type="text/css"><!--/*--><![CDATA[/*><!--*/
			#okkido {
				height:100px;
				background-image: url(okkido.png);
			}
		/*]]>*/--></style>
		<script type="text/javascript"><!--//--><![CDATA[//><!--
			function random_image()
			{
				var okkido = document.getElementById('okkido');
				var slump = Math.round(5*Math.random());
				var random_image = "url(background_" + slump + ".png)";
				okkido.style.backgroundImage = random_image;
/* för test */
document.write(slump);
			}
		//--><!]]></script>
	</head>
	<body>
		<div id="okkido">
			<h1>Okkido.com</h1>
		</div>
		<script type="text/javascript"><!--//--><![CDATA[//><!--
		random_image();
		//--><!]]></script>
	</body>
</html>

glämde bort att du måste kalla på scriptet i slutet av documentet och du behöver en background_0.png förutom din standard okkido.png. Kanske inte vad du ville ha ? vi kan jobba vidare...

Det är testat och fungerar iaf :birp

Medlem sedan nov. 20016 480 inlägg
#13

Vad kan du göra med ditt cms då? Skriva ut text?

Medlem sedan maj 20007 492 inlägg
#14

Tack så hemskt mycket Fuel, har fullt upp med annat inför en deadline så jag får titta på det nogare om någon dag, men det ser bra ut! :)

275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)