2008-11-14 25 views

Trả lời

10

Giả sử bạn biến contentEditable tục như thế này:

document.body.contentEditable = true; 

Tất cả bạn phải làm là tắt nó đi cho tất cả (hoặc một số) hình ảnh.

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

Hoạt động cho nội dung có thể chỉnh sửa được. Dường như không hoạt động cho designMode.Giải pháp đã tạo ra một vấn đề mới mặc dù: khi một hình ảnh được di chuyển xung quanh và phát hành, nó sẽ tạo một bản sao của hình ảnh ở vị trí dấu mũ trong vùng có thể chỉnh sửa. Bất kì lời đề nghị nào? – dEEf

+0

Tôi không biết nhiều về một trong hai, vì vậy sự khác biệt giữa contentEditable và designMode là gì? Nếu designMode không hoạt động, bạn có thể chuyển sang contentEditable không? – nickf

+0

Tìm thấy sự cố với vấn đề trước của tôi (draggin của hình ảnh): mousedown -> event.preventDefault(); Cảm ơn nick, tôi đang chuyển sang contentEditable ... – dEEf

1

Vâng, bạn không thể loại bỏ những trình xử lý thay đổi kích thước không trong Firefox và IE ... ít nhất tôi không thể tìm được giải pháp.

Cuối cùng, tôi đã quản lý trong Firefox bằng cách chỉnh sửa một số tệp cấu hình từ thư mục cài đặt FF và chúng tôi không muốn làm điều đó, phải không?

Dù sao, nếu bạn muốn vô hiệu hóa thay đổi kích thước nếu hình ảnh (nhưng thay đổi kích thước xử lý vẫn sẽ được hiển thị) chỉ cần thêm một số phong cách css như:

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

regards, Mihailo

1

Mặc dù câu hỏi là một từ lâu rồi. Mỗi phần tử khối (div, img ...) sẽ được trang trí với các chốt từ FF. thử nghiệm nó:

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

Không xử lý, không có thay đổi kích thước, vv

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

Những hình ảnh có thể được thay đổi kích cỡ. Vì vậy, bạn phải gọi rõ ràng contenteditable = "false" cho mỗi khối elem bạn không muốn có xử lý, như nickf đã nói cho các hình ảnh.

Thậm chí còn kỳ lạ hơn: gán "vị trí: tuyệt đối" cho bất kỳ phần tử nào của bạn - kể cả div gốc - và nó có xử lý một lần nữa.

+1

Tôi thích làm thế nào trên stackoverflow bạn không bao giờ biết làm thế nào câu trả lời của bạn sẽ tác động khác, có thể trong những năm tới. Điều này: "Thậm chí kỳ lạ hơn: gán" vị trí: tuyệt đối "cho bất kỳ yếu tố nào của bạn - ngay cả div gốc - và nó có xử lý một lần nữa." đã cứu tôi rất nhiều rắc rối ngay bây giờ :) –

5

Tôi nghĩ bạn sẽ thấy điều này dễ chấp nhận hơn nhiều. Dường như hoạt động trong Firefox nhưng tôi không chắc chắn về các trình duyệt khác:

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

Nó vẫn giữ nguyên khả năng kéo và thả.

16

này hoạt động tốt cho Firefox:

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

Đối với IE tôi đã sử dụng:

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

+0

+1 đây phải là câu trả lời được chấp nhận! – giammin

0

Tôi không thể bình luận và biểu quyết chưa vậy ... theo của nmb.ten trả lời, bạn phải sử dụng:

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

Nhưng nó hoạt động chỉ sau nội dung của bạn được điền vào (Tôi có nghĩa là nếu bạn phải chỉnh sửa một số văn bản được lưu trước đó).

Các vấn đề liên quan