2009-03-19 12 views
0

Nous avons une application où les utilisateurs peuvent entrer des "notes" dans un contrôle d'édition riche (RedEditor de Telerik, mais cela n'a pas d'importance ici). Nous avons eu un utilisateur d'entrer des notes de w/dans Safari qui avait un <span></span> au milieu de la note, et cette période a un style sur elle en spécifiant white-space:pre Le code HTML de la note était sous forme de:Span avec style espace blanc dans IE (7) appliqué _past_ end of span

<div> This is a note <span class="Apple-tab-span" style="white-space: pre; "> </span> and here's more of the note. </div> 

Assez simple, le style devrait s'appliquer à la portée, et la portée avait 4 espaces en elle. Il devrait y avoir 4 espaces dans la sortie résultante.

Voici le problème. IE semble appliquer ce style non seulement à l'envergure, mais à la div englobant! Par conséquent, cette longue ligne qui aurait dû être enveloppée depuis qu'elle n'est pas dans la travée, a maintenant poussé le document jusqu'à ce que la ligne corresponde à la page.

Qu'est-ce qui me manque? Je sais IE a des problèmes, mais cela ne semble pas juste, même pour IE.

Ainsi, la question (s):

1) Ai-je raison que l'attribut white-space ne doit avoir appliqué à la durée?

2) Est-ce que cela peut être résolu d'une façon ou d'une autre? Rappelez-vous, je ne contrôle pas le contenu entré. Et il est entré à partir d'un mac w/Safari et étant vu dans IE.

Edit: Le doctype sur la page en question est: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Répondre

0

Utilisez-vous un mode standard DOCTYPE? En mode Quirks, IE applique incorrectement 'white-space' uniquement pour bloquer les éléments. (Je n'ai pas réussi à faire sortir l'espace blanc de la plage, mais cela n'a tout simplement pas fonctionné.)

Je ne contrôle pas le contenu saisi.

Il est inhabituel d'autoriser la saisie de contenu HTML brut; dans ce cas, vous ne pouvez pas vraiment réparer les bizarreries du navigateur!

+0

Le contenu HTML brut ne peut pas être entré (bien, je suppose que cela pourrait, mais ne l'était pas), il s'agissait plus probablement d'un copier-coller d'un autre document sur le Mac. C'est un site privé utilisé par les chercheurs, donc nous sommes plus préoccupés par la capacité que la protection XSS. –

0

1) Oui, vous avez raison.

2) J'ai eu beaucoup de problèmes avec les contrôles Telerik en particulier le RTE HTML brut qui y est entré. Je suggère que vous vérifiez votre base de données et voyez ce que HTML est stocké là.

espoir qui aide

Darko

+0

Ce texte a été saisi via la vue normale (pas html), mais j'entends ce que vous dites à propos de ce changement. Cependant, nous produisons ce HTML sur une autre page (juste là, pas d'éditeur) et c'est là que le problème se produit. Ce n'est donc pas l'éditeur. –

0

Je ne suis pas sûr de ce que vous essayez d'atteindre avec un espace dans une période pré comme son style. Si vous essayez de faire en sorte que la phrase ait un espace là-bas et non un retour à la ligne, mettez le style no-wrap sur tout le div. Si tout ce que vous voulez est un espace, mettez l'entité html & nbsp directement entre les deux mots et ils ne se sépareront pas. Ou si vous essayez de créer un espace arbitraire supérieur à un seul espace, oubliez pre et donnez juste une largeur à cet espace.

Questions connexes