2008-11-14 18 views

Odpowiedz

10

Say włączeniu contentEditable na tak:

document.body.contentEditable = true; 

Wszystko co musisz zrobić, to wyłączyć go dla wszystkich (lub kilku) obrazów.

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

Działa dla prawdziwych treści. Wydaje się nie działać dla designMode.Rozwiązanie spowodowało jednak powstanie nowego problemu: gdy obraz zostanie przesunięty i zwolniony, utworzy kopię obrazu w pozycji daszka w obszarze edytowalnym. Jakieś sugestie? – dEEf

+0

Nie wiem zbyt wiele o tym, więc jaka jest różnica między contentEditable i designMode? Jeśli designMode nie działa, czy możesz przełączyć się na contentEditable? – nickf

+0

Znaleźliśmy problem z poprzednim problemem (draggin of image): mousedown -> event.preventDefault(); Dzięki nicku, przełączam się na contentEditable ... – dEEf

1

Cóż, nie można usunąć tych rozmiaru ładowarki ani w Firefoksie, ani IE ... przynajmniej ja nie mogę znaleźć rozwiązania.

Na koniec udało mi się to w Firefoksie, edytując niektóre pliki konfiguracyjne z folderu instalacyjnego FF i nie chcemy tego robić, prawda?

W każdym razie, jeśli chcesz wyłączyć rozmiaru czy zdjęć (ale zmiana rozmiaru koparki nadal będzie widoczny) wystarczy dodać trochę stylu css takich jak:

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

Pozdrowienia, Mihailo

1

Choć pytanie było dawno temu. Każdy element bloku (div, img ...) zostanie ozdobiony uchwytami z FF. testowania go:

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

Brak uchwyty, bez zmiany rozmiaru itp

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

Obraz może być zmieniany. Musisz więc jawnie wywołać contenteditable = "false" dla każdego bloku, którego nie chcesz mieć uchwytów, jak już powiedział nick dla obrazów.

Jeszcze dziwniejsze: przypisz "position: absolute" do dowolnych elementów - nawet div rodzica - i ponownie obsługuje.

+1

Uwielbiam, jak na stackoverflow nigdy nie wiesz, jak twoje odpowiedzi wpłyną na inne, być może w nadchodzących latach. To: "Jeszcze dziwniejsze: przypisz" position: absolute "do dowolnych elementów - nawet div jednostki nadrzędnej - i ponownie obsługuje." zaoszczędziło mi teraz wiele kłopotów :) –

5

Myślę, że uznasz to za znacznie bardziej akceptowalne. Wydaje się działać w Firefox, ale nie jestem pewien o innych przeglądarek:

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

Pozostawia przeciągnij i upuść zdolność nienaruszone.

16

Działa to dobrze dla Firefox:

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

dla IE Użyłem:

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

+0

+1 to powinna być zaakceptowana odpowiedź! – giammin

0

nie mogę komentować i głosować jeszcze tak ... według nmb.ten-tych odpowiedź, musisz użyć:

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

Ale działa tylko po twoja treść jest wypełniona (mam na myśli, jeśli musisz edytować jakiś tekst wcześniej zapisany).

Powiązane problemy