2008-11-14 17 views

Répondre

10

Dites vous tournez contentEditable comme ça:

document.body.contentEditable = true; 

Tout ce que vous avez à faire est de désactiver pour tous (ou certaines) images.

var imgs = document.getElementsByTagName("IMG"); 
for (var i = 0; i < imgs.length; ++i) { 
    imgs[i].contentEditable = false; 
} 
+1

Fonctionne pour contenteditable en effet. Ne semble pas fonctionner pour designMode.La solution a cependant créé un nouveau problème: lorsqu'une image est déplacée et relâchée, elle crée une copie de l'image à la position du curseur dans la zone modifiable. Toute suggestion? – dEEf

+0

Je ne connais pas grand chose non plus, alors quelle est la différence entre contentEditable et designMode? Si designMode ne fonctionne pas, pourriez-vous passer à contentEditable? – nickf

+0

Trouvé le problème à mon précédent problème (draggin de l'image): mousedown -> event.preventDefault(); Merci, je passe à contentEditable ... – dEEf

1

Eh bien, vous ne pouvez pas supprimer ces gestionnaires de redimensionnement ni dans Firefox ni IE ... au moins, je ne pouvais pas trouver une solution.

À la fin, j'ai réussi cela dans Firefox en éditant des fichiers de configuration à partir du dossier d'installation FF et nous ne voulons pas faire cela, non?

Quoi qu'il en soit, si vous voulez désactiver le redimensionnement si les images (mais redimensionner les gestionnaires seront toujours visibles) il suffit d'ajouter un peu de style css comme:

img { 
    width: auto !important; 
    height: auto !important; 
} 

salutations Mihailo

1

Bien que la question était il y a longtemps. Chaque élément de bloc (div, img ...) sera décoré avec des poignées de FF. Testez-le:

<div id="myDiv" contenteditable="true"><p>Sample text!</p></div> 

Aucune poignée, redimensionnez pas etc

<div id="myDiv" contenteditable="true"><p>Sample text!</p><img src="picture.jpg" /></div> 

L'image peut être redimensionnée. Vous devez donc appeler explicitement contenteditable = "false" pour chaque élément de bloc que vous ne voulez pas manipuler, comme l'a déjà dit nickf pour les images.

Encore plus étrange: affecter "position: absolute" à l'un de vos éléments - même la div parent - et il a encore des poignées.

+1

J'aime comment sur stackoverflow vous ne savez jamais comment vos réponses auront un impact sur les autres, peut-être dans les années à venir. Ceci: "Encore plus bizarre: assignez" position: absolute "à n'importe lequel de vos éléments - même le div parent - et il a encore des poignées." m'a sauvé beaucoup de problèmes en ce moment :) –

5

Je pense que vous trouverez cela beaucoup plus acceptable. Semble fonctionner dans Firefox mais je ne suis pas sûr d'autres navigateurs:

document.execCommand("enableObjectResizing", false, false); 

Il laisse la capacité de glisser-déposer intacte.

16

Cela fonctionne bien pour Firefox:

document.execCommand("enableObjectResizing", false, false);

Pour IE je l'ai utilisé:

image.attachEvent("onresizestart", function(e) { e.returnValue = false; }, false);

+0

+1 cela devrait être la réponse acceptée! – giammin

0

Je ne peux pas commenter et voter pourtant si ... selon nmb.ten pour répondre, vous devez utiliser:

document.execCommand("enableObjectResizing", false, false); 

Mais cela fonctionne seulement après votre contenu est rempli (je veux dire si vous devez éditer du texte enregistré auparavant).