Cela fonctionne bien dans Firefox et Chrome, mais ne fonctionne pas dans IE8. Voici la structure html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
// this does not work in IE
$('<style type="text/css"></style>').text('body {margin: 0;}').appendTo('head');
});
</script>
</head>
<body>
</body>
</html>
Et quelle est l'alternative de le faire dans IE?
Cela fonctionne pour moi dans IE7:
$('<style type="text/css">body {margin: 0;}</style>').appendTo($('head'));
Une autre syntaxe qui pourrait être plus facile à lire:
$('head').append('<style type="text/css">body {margin:0;}</style>');
Toutefois, si vous appelez .text(val)
ou .html(val)
pour définir le contenu de la balise style
, une exception sera levée, car ils définissent la propriété DOM innerHTML
qui est en lecture seule.
Voici la documentation d'IE de la propriété innerHTML
:
La propriété est en lecture/écriture pour tous les objets , À l’exception du suivant, pour Pour lequel elle est en lecture seule: COL, COLGROUP, . FRAMESET, HEAD, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR.
Personnellement je le ferais.
var styles = {
margin: '0',
padding: '5px',
border: 'solid 0px black'
}
$('body').css(styles);
J'avais le même problème avec un plug-in de dépendance pour jQuery, utilisez simplement ce code:
$('head').append('<style>' + content + '</style>');
alors votre code fonctionnera dans presque tous les navigateurs, ici "contenu" est une variable que vous définissez en externe et qui contiendra les données que vous souhaitez insérer dans les balises <style>
. cela fonctionnera certainement.
Pour charger dynamiquement un fichier CSS à l'aide de JQuery.
var link = $("<link>");
link.attr({
type: 'text/css',
rel: 'stylesheet',
href: <your CSS file url>
});
$("head").append( link );
essayez: $('<div/>').load("style.css",function(style){
$(data.appendTo).append('<style type="text/css">' + style + '</style>');
});
Essayez la fonction css
dans jQuery:
$( 'body' ).css( { margin: 0 } )