2010-06-13 16 views
2

Bon, certains gars sauront ce que je veux dire et éditeront ma Question mais ils l'ont fait mal.Alternative pour execCommand ('underline');

Une meilleure explication:

Vous avez un div contenteditable avec le texte This is a Test String.. Si vous utilisez maintenant la execCommand('underline') sur Test String vous obtenez This is a <u>Test String</u> si vous utilisez maintenant la execCommand('strikethrough') sur is a Test vous obtenez This <s>is a <u>Test</u></s><u>String</u>, cela est exact. Donc, en HTML5 <u> et <s> sont obsolètes. Pour la première execCommand, vous pouvez utiliser le surroundContents() avec un <span style="text-decoration:underline;">. Si vous utilisez maintenant le surroundContets() pour le deuxième execCommand vous recevez le BAD_BOUNDARYPOINTS_ERR. La chose que je veux est une fonction qui fonctionne comme le execCommand dans ce cas mais avec des fonctions où je peux définir avec HTML-Tag la chaîne sera enveloppée ... (Il devrait être intelligent dans le cas où il y a un chevauchement ...)

+1

Il y a quelque chose d'autre ici que Javascript et HTML5. – Pointy

Répondre

0

Le surroundContents() aura des problèmes: si la sélection comprend des éléments de bloc multiples, tels que <div> s ou <p> s, le contenu entouré seront placés dans un nouveau bloc, brisant hors de sa position initiale. Pour remédier à cela, vous pouvez facilement adapter ma réponse ici: apply style to range of text with javascript in uiwebview

Vous aurez besoin de faire ce qui suit:

  • Créer une classe CSS avec la règle « text-decoration: underline; »
  • Ajouter une méthode intersectsNode de Range pour les navigateurs qui ne l'ont pas, comme Firefox (voir MDC pour un exemple: https://developer.mozilla.org/en/DOM/range.intersectsNode)
  • Si vous vous souciez de IE, vous aurez besoin d'écrire une solution complètement différente.
+0

Merci, ça aide. Et ... cela fonctionne dans Safari, je n'ai pas besoin de plus. :RÉ – Phil

0

CSS text-decoration: underline.

+1

Très sympa, haha, je ne tagge pas CSS Je sais comment ça marche en CSS pour faire un soulignement, ... La question est à propos d'un alternativ pour l'execCommand ('underline') – Phil

+1

C'est un vrai substitut, puisqu'il contourne ce problème même si l'ordre des balises est incorrect. – Thevs

+0

Vous pouvez également placer votre commande dans le bloc 'try..catch' pour détecter une erreur d'utilisation incorrecte. – Thevs