2009-07-24 63 views
13

Tôi đang làm việc trên một plugin mà khi TinyMCE được sử dụng làm trình chỉnh sửa Trực quan, sử dụng các lệnh TinyMCE để chèn văn bản vào vùng chỉnh sửa nội dung nội dung. Hiện tại, nó hoạt động chỉ bằng cách chạy lệnh. Nếu nó hoạt động, thì TinyMCE đang hoạt động và nếu không, thì tôi có JS tùy chỉnh để làm việc với trình soạn thảo HTML.Cách kiểm tra xem TinyMCE có hoạt động trong WordPress

Câu hỏi của tôi, tuy nhiên: có cách nào để kiểm tra xem TinyMCE có đang hoạt động hay không thay vì chỉ chạy lệnh và bị lỗi khi không?

Trả lời

23

Và ... tôi đã trả lời câu hỏi cho bản thân mình. Các điều kiện bạn muốn kiểm tra là như sau:

is_tinyMCE_active = false; 
if (typeof(tinyMCE) != "undefined") { 
    if (tinyMCE.activeEditor == null || tinyMCE.activeEditor.isHidden() != false) { 
    is_tinyMCE_active = true; 
    } 
} 

Bí quyết là tinyMCE.activeEditor trả về NULL khi TinyMCE không được kích hoạt. Bạn có thể sử dụng phương thức isHidden() để đảm bảo phương thức không thực thi khi bạn đã chuyển sang chế độ trình chỉnh sửa HTML.

Đây là tài liệu không được ghi trên trang web và diễn đàn TinyMCE.

+0

Thaks. Điều này làm việc tốt. :) – Haris

+0

Hm này không làm việc cho tôi. Đối với một số lý do, nó là sự thật bất kể nó ở chế độ HTML hay chế độ Visual. Bất cứ ai khác có vấn đề này? – Shaan

+1

Tôi nghĩ rằng vấn đề của tôi là trình soạn thảo tinyMCE chưa được tải và tôi đang kiểm tra trước khi được tải đầy đủ. Làm thế nào để tôi đợi cho đến khi nó được nạp trước khi tôi thực hiện kiểm tra này? – Shaan

7

Vâng, tôi thấy mã trên wordpress: ABSPATH/wp-includes/js/autosave.js nộp

// (bool) is rich editor enabled and active 
var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); 
2

Như câu hỏi này xếp hạng trong công cụ tìm kiếm. Tôi nghĩ rằng tôi nên mở rộng Daniels câu trả lời một chút để hỗ trợ khi chúng tôi có nhiều trường hợp của trình soạn thảo wordpress trong một trang duy nhất.

var is_editor_active = function(editor_id){ 

     if(typeof tinyMCE == 'undefined'){ 
      return false; 
     } 

     if(typeof editor_id == 'undefined'){ 
      editor = tinyMCE.activeEditor; 
     }else{ 
      editor = tinyMCE.EditorManager.get(editor_id); 
     } 

     if(editor == null){ 
      return false; 
     } 

     return !editor.isHidden(); 

    }; 

Sử dụng

Khi bạn chỉ cần kiểm tra các biên tập viên tích cực

if(is_editor_active()){ 
    // do stuff 
} 

Nếu một biên tập viên với id nào đó cần phải được kiểm tra

if(is_editor_active('mycontent'){ 
    // do stuff 
} 

Tôi hy vọng điều này chức năng nhỏ sẽ hữu ích cho người khác :)

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