Firefox не отвечает на сообщение SignalR в tinyMCE - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужно иметь возможность интегрировать tinyMCE с SignalR, чтобы люди могли видеть изменения редактора в реальном времени. Это работает достаточно хорошо в части ввода данных (браузер -> контроллер) в Firefox, Opera, Chrome, et c., Но на принимающей стороне, кажется, только Chrome последовательно получает сообщение. Другие браузеры не часто получают изменения в TinyMCE. У меня есть другой набор функций SignalR для обычных диалогов, и они прекрасно работают во всех браузерах, проблема только в TinyMCE.

По сути, PublishMessage, похоже, не срабатывает, за исключением Chrome. Я даже пытался использовать приватный браузер в FF.

Обратите внимание, что у меня есть селектор "textarea", поскольку может быть несколько областей редактирования, и имя соответствующей области отправляется через triggerElement.

Я последовал другому примеру ( 1 ).

$(function () {
    // get handle to chat hub generated by SignalR
    let tinyMCEHub = $.connection.tinyMCEHub;

    tinyMCE.init({
        selector: "textarea",
        plugins: ['autoresize advlist autolink link lists charmap print preview hr anchor pagebreak spellchecker', 'searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime  nonbreaking', 'save table  directionality emoticons template paste '],
        menubar: true,
        toolbar: '   fontselect fontsizeselect bold italic underline forecolor| alignleft  alignright alignjustify | bullist numlist outdent indent ',
        height: "20vh",
        browser_spellcheck: true,
        fontsize_formats: '8pt 10pt 12pt 14pt 18pt 24pt 36pt',
        font_formats: 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Times New Roman=times new roman,times;Symbol=symbol',
        init_instance_callback: function (editor) {
            editor.on('input', function (e) {
                unsaved = true;
            });
        },

        setup: function (ed) {
            tinyMCEHub.client.PublishMessage = function (message, sessID, triggerElement) {
                let sessionID = $("#sessionId").val();
                if (sessionID != sessID) {
                    let publishEditor = tinyMCE.get(triggerElement);
                    let bookmark = publishEditor.selection.getBookmark(2, true);
                    tinyMCE.get(triggerElement).setContent(message);
                    publishEditor.selection.moveToBookmark(bookmark);
                }
            };

            $.connection.hub.start().done(function () {
                ed.on('keyup', function (e) {
                    var text = tinyMCE.activeEditor.getContent();
                    let sessionID = $("#sessionId").val();
                    let triggerElement = ed.id;
                    tinyMCEHub.server.send(text, sessionID, triggerElement);
                });
            });
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...