Tôi đang mở rộng LMS được lưu trữ trên đám mây bằng javascript. Do đó, chúng tôi có thể thêm javascript vào trang, nhưng không thể sửa đổi javascript của nhà cung cấp cho các thành phần khác nhau.Cách thích hợp để sửa đổi thanh công cụ Sau khi bắt đầu bằng TinyMCE
LMS thường sử dụng TinyMCE. Mục đích là thêm một nút mới vào thanh công cụ của mỗi trình soạn thảo tinyMCE.
Vấn đề là do các mô-đun TinyMCE được khởi tạo trong mã không thể chạm của nhà cung cấp, chúng tôi không thể sửa đổi lệnh init(). Do đó, chúng tôi không thể thêm bất kỳ văn bản nào vào thuộc tính "thanh công cụ" của đối tượng init().
Vì vậy, tôi thực hiện điều này một cách vừa phải hacky:
tinyMCE.on('AddEditor', function(e){
e.editor.on('init', function(){
tinyMCE.ui.Factory.create({
type: 'button',
icon: 'icon'
}).on('click', function(){
// button pressing logic
})
.renderTo($(e.editor.editorContainer).find('.mce-container-body .mce-toolbar:last .mce-btn-group > div')[0])
});
});
Vì vậy, các công trình này, nhưng không cần thiết phải nói rằng tôi không hoàn toàn thoải mái cần phải tìm kiếm một địa điểm cụ thể như trong DOM như thế để chèn nút. Mặc dù điều này làm việc, tôi không tin đó là ý định của người sáng tạo cho nó được sử dụng như thế này.
Có cách nào thích hợp để thêm nút vào thanh công cụ, sau khi khởi tạo, nếu chúng tôi không thể sửa đổi mã khởi tạo?
Tôi không chắc chắn chắc chắn về thêm nút sau đó, nhưng bạn có thể unbind init ban đầu và rebind tất cả mọi thứ cho mình. Vì vậy, nó sẽ được như thể bạn chạy init. Điều này sẽ làm tăng thời gian tải, nhưng sẽ cung cấp cho bạn những gì bạn muốn. – Chris