2012-12-14 45 views

Trả lời

42

Sử dụng các tham số cấu hình readonly

tinyMCE.init({ 
     ... 
     theme : "advanced", 
     readonly : 1 
}); 

Đây là một link to a demo.

Cập nhật: Những gì bạn có thể làm để ngăn chặn người dùng chỉnh sửa nội dung trong trình soạn thảo của bạn là để thiết lập các thuộc tính contenteditable của cơ thể biên tập iframe false:

tinymce.activeEditor.getBody().setAttribute('contenteditable', false); 
+2

cảm ơn, nhưng tôi cần phải làm điều này tại thời gian chạy, không phải trong quá trình initilization –

+3

trong trường hợp này có một cái nhìn tại câu hỏi SO sau đây: http://stackoverflow.com/questions/8946391/set-tinymce-editor- param-after-initialized – Thariama

8

Thariama của solution sẽ đặt tất cả textareas TinyMCE trên trang chỉ đọc.

Giải pháp tốt nhất mà tôi đã tìm thấy là posted bởi Magnar Myrtveit sẽ đặt trường thành chỉ đọc có thuộc tính chỉ đọc. Đây là mã:

tinyMCE.init({ 
    ... 
    setup: function(ed) { 
     if ($('#'+ed.id).prop('readonly')) { 
      ed.settings.readonly = true; 
     } 
    } 
}); 
0

Có thể dòng mã này sẽ giúp các trình duyệt khác sử dụng iframe.

tinymce.activeEditor.getBody().contenteditable = false 

Kính trọng!

0

Tôi cố gắng sử dụng chỉ đọc: 1 lệnh khi tôi sử dụng thanh công cụ sẽ biến mất.

làm thế nào để sử dụng

tinymce.activeEditor.getBody() setAttribute ('contenteditable', false).

+0

Đây không phải là câu trả lời rất dễ đọc; bạn nên mở rộng nó và cung cấp thêm một chút ngữ cảnh. – brandonscript

24

NẾU bạn chỉ có một biên tập viên, công trình này:

tinymce.activeEditor.getBody().setAttribute('contenteditable', false); 

Nếu bạn có nhiều biên tập viên, bạn phải chọn chúng bằng id của textarea:

tinyMCE.get('textarea_id').getBody().setAttribute('contenteditable', false); 
+1

Mặc dù văn bản bị vô hiệu hóa, nó vẫn có thể được sửa đổi với thanh công cụ, hoặc bt chọn tất cả nội dung whit nhấp đúp chuột – Rumpelstinsk

1

Để vô hiệu hóa bạn có thể gọi lệnh này:

tinymce.EditorManager.execCommand('mceToggleEditor', true, tinymceId); 

Và để bật lại trình chỉnh sửa, bạn có thể gọi lại lệnh này.

'mceToggleEditor' lệnh bật hoặc tắt chế độ WYSIWYG bằng cách hiển thị hoặc ẩn đối tượng văn bản và trình chỉnh sửa. Đây không phải là điều tương tự như mceAddControl hoặc mceRemoveControl vì cá thể vẫn còn đó và chưa được khởi tạo, vì vậy phương thức này nhanh hơn.

Link cho lệnh trên: http://archive.tinymce.com/wiki.php/TinyMCE3x:Command_identifiers

0

Bạn có thể xem câu trả lời này ở đây bởi @rioted: https://stackoverflow.com/a/34764607/1827960.

tôi sử dụng nó để đưa ra giải pháp này:

tinymce.settings = $.extend(tinymce.settings, { readonly: 1 }); 
tinymce.EditorManager.editors.forEach(function (editor) { 
    tinymce.EditorManager.execCommand('mceRemoveEditor', false, editor.id); 
    //tinymce.EditorManager.editors = []; 
    tinymce.EditorManager.execCommand('mceAddEditor', false, editor.id); 
}); 
32

Từ phiên bản 4.3.x trên bạn có thể sử dụng mã dưới đây để biết chế độ readonly

tinymce.activeEditor.setMode('readonly'); 

và cho chế độ thiết kế:

tinymce.activeEditor.setMode('design'); 
+2

Đây cũng là giải pháp làm việc duy nhất trong 4.3.x vì các đề xuất khác không hoạt động. –

+1

Vấn đề là nó không chỉ vô hiệu hóa chỉnh sửa mà còn tất cả các plugin, bao gồm cả Xem trước và xem mã nguồn –

+1

Đây là giải pháp duy nhất có hiệu quả đối với tôi. Nó cũng là giải pháp sạch nhất được trình bày. – BrianLegg

1

bạn có thể sử dụng

this.getBody().setAttribute('contenteditable', false); 

mất nhìn vào giải pháp đầy đủ ,, phía máy chủ của tôi là Asp.net MVC

setup: function (ed) { 
     ed.on('init', function() { 
      this.execCommand("fontSize", false, "17px"); 
      $("html,body").scrollTop(0); 
      @if (ViewBag.desableEdit != null && ViewBag.desableEdit == true) 
      { 
       <text> 
        this.getBody().setAttribute('contenteditable', false); 
       </text> 
      } 

     }); 

cách anather để làm điều đó nếu bạn có server side condition sẽ được loại bỏ trong HTML trở

tinymce.init({ 
    selector: ... , 
    .... 
    @if (ViewBag.desableEditExseptExportNumber != null && ViewBag.desableEditExseptExportNumber == true) 
    { 
     <text> 
       readonly: 1, 
     </text> 
    } 
    language: 'ar', 
    ....}); 
0

đó làm việc cho ASP.NET MVC Razor

readonly: @(Model.Readonly ? "true" : "false") 

khi khởi tạo TinyMCE:

tinymce.init({/* put readonly setting here */}); 
Các vấn đề liên quan