8
votes

jquery val ne fonctionne pas correctement en chrome

J'ai une fonction de jQuery simple:

$('#selectable1 span').live('mousedown', function() {
        var ff = $(this).css("font-family");
        $("#family").val(ff);
});


2 commentaires

+1 C'est des choses intéressantes que vous faites avec HTML5 et CSS3.


Merci d'anurag. Heureux que vous ayez remarqué.


3 Réponses :


-1
votes

Font-famille donne une liste de valeurs séparées par des virgules, pas la police utilisée. Cela peut également donner la valeur dans des citations. Sur votre page exemple, ajouter la ligne alerte (FF) donne:

'fois neuf romain'

Georgia

adage-script-1, adage-script-2


0 commentaires

7
votes

Chrome enveloppe les familles de polices ayant plusieurs mots avec des guillemets simples. Donc, la valeur de Font-famille retournée dans Chrome est la suivante: 'fois neuf romaine' qui ne correspond pas à la valeur dans la liste SELECT LIST Times New Roman .

Considérant tous Ces variations de navigateur, je pense que la meilleure solution consiste à séparer les noms de famille par virgule, coupez la citation unique (le cas échéant) autour de chaque nom de police et joignez-les plus tard. Utilisez cette valeur désinfectée à l'intérieur de la liste Sélectionner. xxx

voir un Exemple . La liste de sélection devait être modifiée pour suivre ce schéma de dénomination cohérent pour les valeurs:

FontName [ FontName]

Cela repose lourdement sur le fait qu'un Le nom de la police sera non contenir des virgules, cité ou non.


5 commentaires

hmmm, donc je dois dépasser la valeur retournée des comas


+1, était juste sur le point de poster cela après avoir édité les balises et de fixer une faute de frappe. Il convient également de noter que Chrome insère également un espace après la virgule des familles de polices séparées par des virgules, c'est pourquoi cliquer sur "Adage" ne fonctionne pas non plus.


Merci Anurag. C'est aussi une excellente solution


Y a-t-il des noms de police contenant , dans les guillemets? Si c'est le cas, vous avez un boîtier de coin pour couvrir.


Les noms peuvent être hors de citations aussi bien qu'ils sont échappés. Font-famille: "My, génial polices" et Font-famille: mon \, génial \ font est à la fois légal. Chrome citera le second lorsqu'on accédera à la DOM, Firefox retournera simplement ce qui a été transmis dans lequel est un problème, car nous récupérons ma police génère et il n'y a aucun moyen de dire si mon est une police séparée. Cependant, en ignorant cet impossible à traiter de la situation, nous devrons écrire un petit analyseur pour ignorer les virgules à l'intérieur des chaînes citées :)



2
votes

Vous pouvez légèrement modifier votre script pour remplacer les guillemets que WebKit ajoute lorsque le nom de police contient des espaces, comme celui-ci: xxx

Vous pouvez voir une démo de travail ici :)

et voici une approche de regex tirant la valeur littérale de style c'est probablement plus facile que tout , mais je ne suis pas un gourou de regex, quelqu'un se sent libre d'améliorer Ceci et mettre à jour la réponse (je suce à regex, désolé!) Cela fonctionne pour tous les exemples que vous avez.


6 commentaires

@NICK: Bien que cela fonctionne pour «Times New Roman», le correctif devra également changer les valeurs de la boîte de sélection et la fixation de la manière dont les valeurs CSS sont spécifiées pour la compatibilité complète du navigateur. Vous pouvez voir cela même dans votre démonstration de travail :-)


@Andy - clarifie un peu? Vous pouvez appliquer la version sans guillemets, cela fonctionnera, permettez-moi d'ajouter à la démo.


@Mircea, @nick: Voir mon commentaire Répondre à La réponse d'Anurag < / a>. Chrome insère également des espaces après toutes les virgules dans Font-famille qui enfreint Adage.


@Mircea - Vous allez avoir un choix un format dans votre