# 9073 Обратный вызов ImageUpload нельзя назвать междоменным CKEditor - PullRequest
0 голосов
/ 18 сентября 2018

https://dev.ckeditor.com/ticket/9073

У меня был уникальный сценарий, который требует, чтобы мой загрузчик изображений / система управления изображениями размещались на отдельном сервере.Из-за этого я столкнулся с ошибкой «ошибка-блокировка-кадра-с-источником-из-за-доступа-к-исходному-кадру» безопасности.

В ходе моего исследования я не смог определитьчеткий ответ на решение этой проблемы;хотя, возможно, уже есть способ сделать это / лучше, я хотел бы опубликовать мой обходной путь здесь на случай, если кто-то еще сможет его использовать.

1 Ответ

0 голосов
/ 18 сентября 2018
CKEDITOR.on( 'dialogDefinition', function( ev ) {
console.log('dialof def');
var dialogName = ev.data.name,
dialog = ev.data.definition.dialog;

//verify dialog is of name image
if ( dialogName == 'image' ) {

    //on show create click event listener
    dialog.on('show', function(){
        window.addEventListener("click", evalClickEventType, false);
    })

    //evaluate click event to ensure it is Browse Server button
    function evalClickEventType(event){
        if(event.srcElement.innerText == 'Browse Server'){
            createMessageListener();
        } 

        //if either type of close, or ok, remove clickEventListener
        else if (event.srcElement.innerText == 'OK' || event.srcElement.innerText == 'X' || event.srcElement.innerText == 'Cancel'){
            window.removeEventListener("click", evalClickEventType, false);
        }
    }

    //add event listener for type message
    function createMessageListener()
    {
        window.addEventListener("message", receiveMessage, false);
    }

    //set value to txtUrl when event message is emitted.
    function receiveMessage(event){
        CKEDITOR.dialog.getCurrent().setValueOf( 'info', 'txtUrl', event.data );
        window.removeEventListener("message", receiveMessage, false);
    }     
}});

, затем просто замените

window.opener.CKEDITOR.tools.callFunction( funcNum, fileUrl );

на это в своем решении для управления изображениями, чтобы передать URL-адрес с сервера с несколькими источниками.

var targetWindow = window.opener;
targetWindow.postMessage(imgSrc, "*")

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...