ajout d'un fichier css avec jquery
Je crée un popupwindow et je veux ajouter un fichier css à ce popupwindow ci-dessous est le code pour popupwindow. J'ai un javascript avec crée une fenêtre contextuelle.
<a href="popupwindowcontent.xhtml" title="Print" class="popupwindow">Print1</a>
Maintenant, je veux ajouter un fichier css à cette fenêtre contextuelle. J'ai essayé quelque chose comme
$('.popupwindow').append('<link rel="stylesheet" href="css/style2.css" type="text/css" />');
$('head').append('<link rel="stylesheet" href="css/style2.css" type="text/css" />');
Mais ne fonctionne pas.
Merci
8 réponses
$('head').append('<link rel="stylesheet" href="style2.css" type="text/css" />');
Cela devrait fonctionner.
Voici comment j'ajoute css en utilisant jQuery ajax. Espérons que cela aide quelqu'un..
$.ajax({
url:"site/test/style.css",
success:function(data){
$("<style></style>").appendTo("head").html(data);
}
})
var css_link = $("<link>", {
rel: "stylesheet",
type: "text/css",
href: "yourcustomaddress/bundles/andreistatistics/css/like.css"
});
css_link.appendTo('head');
Juste mes quelques cents... parfois, il est bon d'être sûr qu'il n'y a pas de doublons... nous avons donc la fonction suivante dans la bibliothèque utils:
jQuery.loadCSS = function(url) {
if (!$('link[href="' + url + '"]').length)
$('head').append('<link rel="stylesheet" type="text/css" href="' + url + '">');
}
Comment utiliser:
$.loadCSS('css/style2.css');
Votre problème est que votre sélecteur est pour un élément d'ancrage <a>
. Vous traitez la balise <a>
comme si elle représentait la page, ce qui n'est pas le cas.
$('head')
fonctionnera tant que ce sélecteur est exécuté par la page qui a besoin du css.
Pourquoi ne pas simplement ajouter le fichier css à la page en question. Une raison particulière de tenter cela dynamiquement à partir d'une autre page? Je ne suis même pas familier avec un moyen d'injecter css à des pages distantes comme celle-ci ... on dirait que ce serait un trou de sécurité majeur.
ADDENDUM à votre raisonnement:
Ensuite, vous devez simplement passer un paramètre à la page, le lire en utilisant javascript, puis faire tout ce qui est nécessaire en fonction du paramètre.
Essayez de le faire dans l'autre sens.
$('<link rel="stylesheet" href="css/style2.css" type="text/css" />').appendTo('head');
Je ne pense pas que vous pouvez attacher dans une fenêtre que vous instanciez... Je sais que vous ne pouvez pas le faire si les url sont sur des domaines différents (XSS et tout ce jazz), mais vous pouvez parler à partir de cette fenêtre et accéder aux éléments de la fenêtre parent en supposant qu'ils sont sur le même domaine. votre meilleur pari est d'attacher la feuille de style à la page que vous chargez, et si cette page n'est pas sur le même domaine, (par exemple en essayant de redessiner la page de quelqu'un d'autre,) vous ne pourrez pas.
Avez-vous simplement essayé d'utiliser l'attribut media pour votre référence css?
<link rel="stylesheet" href="css/style2.css" media="print" type="text/css" />
Ou définissez-le à l'écran si vous ne voulez pas que la version imprimée utilise le style:
<link rel="stylesheet" href="css/style2.css" media="screen" type="text/css" />
De cette façon, vous n'avez pas besoin de l'ajouter dynamiquement.