35 votes

Comment trouver la position / l'image d'arrière-plan, etc. pour plusieurs arrière-plans à l'aide de jQuery dans Safari

Peut-être que je suis absent quelque chose ici.

Je suis en train de récupérer les informations de fond pour un élément (div), avec de multiples horizons, défini à l'aide de la longhand background-repeat, background-position et background-image.

À l'aide de jQuery, je n'ai tout simplement var bPos = $('#element').css('background-position') pour obtenir l'ensemble des positions actuelles, ce qui me donnera quelque chose comme '0 0, 100px 100px, left bottom' dans Firefox et Chrome (actuellement les versions 5 et 12 respectivement), mais dans Safari (version 5 sur OS-X) elle retourne la première valeur de la paire ('0 0'). Ces CSS valeurs sont définies dans une feuille de style externe.

Quelqu'un a une idée du pourquoi, et comment faire pour obtenir l'ensemble des paires de valeur dans Safari (à l'aide de l'abréviation background de la propriété de ne pas le faire)?

Edit:

Ici, c'est le CSS qui est utilisée dans une feuille de style externe:

#page{
    background-repeat: repeat-x, repeat-x, repeat-x, repeat-x, repeat-x;
    background-image: url('../images/line.png'), url('../images/line.png'), url('../images/line.png'), url('../images/line.png'), url('../images/line.png');
    background-position: 0 798px, 0 653px, 0 125px, 0 88px, 0 78px;
}

Edit:

Ok, j'ai fait un test pour cela sur jsFiddle et l'ont rapporté que jQuery bug , car elle semble être reproductible comportement (bien que j'accepte qu'il pourrait être un navigateur de mise en œuvre de problème plutôt que de réellement un bug jQuery).

Encore, si quelqu'un a des idées...

Edit:

Le jQuery ticket a été fermé - je prendre cela pour dire que c'est un Safari bug - je ne suis pas tout à fait sûr de savoir comment aller plus loin d'ici, mais j'ai posté un rapport de bug avec Apple.

Edit:

Comme l'a souligné Sindre Sorhus, cela semble avoir été corrigé dans Safari 5.1.

1voto

Zhenya Points 205

Comme il est corrigé en 5.1, je suppose que ce n’est plus un gros problème, mais je me demande si, pour contourner le problème, vous pourriez initialement définir l’arrière-plan de js en

 $('#page').attr('style', '...');
 

et puis le lire à partir de là ... un peu stupide et la douleur dans le cul, oui.

-1voto

nich Points 691

Vous pouvez essayer d'utiliser différentes classes. Ce serait easiler.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X