Aller au contenu

Sujets conseillés

Posté

CouCou tout le monde !

J'ai un petit probleme avec un script :

Il a pour fonction de changer la feuille css de la page qui contient une iframe,

apèrs quelque modif j'ai reussi a faire que celle ci puisse aussi beneficier du changement de styles

mais voila il y a des liens qui charge une page dans l'iframe et a ce moment là, la page chargée ne prend pas en compte la feuille css demandée. Elle devrait pourtant chager la fueille css qui est enregistré dans le cookie ?

Je suis on ne plus debutant mais j'espere avoir été clair qu'en même.

Voila le script qui est apellé sur les pages contenant et contenues dans l'iframe:

function setActiveStyleSheet(title) {
var i, a, main;
document.titop.src=title+".jpg";
for(i=0; (a = document.getElementsByTagName("link")); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true ;

if(a.getAttribute("title") == title) a.disabled = false ;
}
}
for(i=0; (a = parent.frames["iframe"].document.getElementsByTagName("link")); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
}
function getActiveStyleSheet() {
var i, a;
for(i=0; (a = document.getElementsByTagName("link")); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
}
return null;
}
function getPreferredStyleSheet() {
var i, a;
for(i=0; (a = document.getElementsByTagName("link")); i++) {
if(a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("rel").indexOf("alt") == -1
&& a.getAttribute("title")
) return a.getAttribute("title");
}
return null;
}
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca;
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
window.onload = function(e) {
var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);
createCookie("style", title, 365);
}
var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);
createCookie("style", title, 365);

Posté

Yo !

est-ce que par hasard les pages sur lesquelles le changement de styles ne se fait pas sont des pages qui ne sont pas hébergés sur ton site ? Car si c'est la cas, tu ne pourras pas changer les styles : erf je me cites :

En javascript, tu ne pourra pas accéder aux objets, méthodes, propriétés HTML d'une page qui se trouve sur un autre domaine que ton javascript. Quand tu essaye de faire cela tu auras en retour un erreur te disant un truc du style : "Access denied". C'est une mesure de sécurité basique intégrée dans les navigateurs depuis un moment maintenant (IE j'en suis en fait j'ai jamais fais attention sous Firefox).

Si ce n'est pas ca, essaye de matter dans la console javascript de Firefox l'erreur qui t'es retouné pour au mois, te et nous mettre sur la voie et tiens nous au courant !

++

Posté

CouCOu ,

(désolé pour le temps de réponse )

Tu m'as fait découvrir cete console qui est un outil plus que precieux :thumbup:

Le contenu de l'iframe est bien sur sur mon site ! :)

DOnc la console me renvoit une erreur car l'image titop se trouvant seulement sur la page contenant l'iframe mais même celle parti de code enlevée pour voir , le contenue de l'iframe ne change pas de skin si on le modifie c'est a dire qu'au chargement dans l'iframe les pages ne lisent pas le cookie pour prendre le skin enregistrée :nonono:

Je peux vous donner l'adresse pour vous rendre compte concretement : actualika.free.fr/musique.php

Posté

CouCou,

Finalement j'ai réussi a m'en sortir.

En fait il fallait simplement remplacer le window.onload par document.onload

ce qui semble assez logique car au chargement du nouveau contenu de l'iframe le fonction ne s'executait donc pas.

Merci de ton aide et au revoir.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...