Chalute !
Je cale sur un petit pouint.
Une feuille de style ne servant que pour le fond d'écran du site, que l'on peut changer via un panneau d'admin.
La feuille de style est un fichier php qui va chercher le nom de fichier image choisi :
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?
...
$query = "SELECT * FROM config";
...
$bg = "$background_image?".filemtime("./img/backgrounds/$background_image");
?>
html {
background: url(./img/backgrounds/<? echo $bg; ?>) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
} |
Dans la page du site coté visiteur, un simple
<link rel="stylesheet" id="bgstyle" type="text/css" href="style_v3_bg.php">
Je voudrais que lorsque le visiteur revienne sur la fenêtre du site, la feuille de style soit rechargée pour prendre en compte le changement de fond d'écran sans recharger la page. C’est je l'admets un peu gadget mais la méthode pourrait également me servir pour d'autres projets.
J'ai tenté plusieurs scripts mais sans résultat
J'arrive à faire charger la feuille de style via jquery (j'enlève bien sur la link ci dessus pour ne pas fausser le test) lorsque la fenêtre a le focus, mais pas moyen de la recharger.
Voici le dernier script en date :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <script>
$(window).on("blur focus", function(e) {
var prevType = $(this).data("prevType");
if (prevType != e.type) { // reduce double fire issues
switch (e.type) {
case "blur":
$('div').text("Blured");
break;
case "focus":
$('div').text("Focused");
// document.getElementById("bgstyle").Window.location.reload(true);
$('#bgstyle').replaceWith('<link id="css" rel="stylesheet" href="style_v3_bg.php"></link>');
break;
}
}
$(this).data("prevType", e.type);
})
</script> |
Évidement, la 'div' n'est là que pour indique visuellement si focus ou non , à terme ça ne sera plus là.
La div témoin indique bien "Blur" ou "Focused" selon que la fenêtre est active ou non, donc ça c'est bon, mais le fond d'écran n'ets pas actualisé.
Bien entendu, le fichier de feuille de style n'étant pas modifié en lui même, jouer avec sa date ne changera rien
Du coup, je sais pas comment faire.
Une tite idée serait la bienviendue
Merkouin
Partager