GWT внешняя JavaScript проблема интеграции (OpenSeadragon) с EventHandlers после полного экрана - PullRequest
0 голосов
/ 23 апреля 2020

в моем GWT-проекте я в настоящее время интегрирую внешний пакет JavaScript OpenSeadragon (см. здесь ), который представляет собой ImageViewer с функциями zoo, rotate и fullscreen. Пока это в основном работает хорошо. Единственная неприятная проблема заключается в том, что после возврата из полноэкранного режима ничто больше не является кликабельным. Я думаю, что причина этого крайне нежелательного поведения в том, что openseadragon удаляет все другие Dom-элементы, когда он показывает полноэкранный режим (см. эту ошибку для более подробной информации). Код следующий:

    public native void createZoomeImage(String ressource, Element where, SingleImageEditor sie)
/*-{
    var viewer =  $wnd.OpenSeadragon({
        element: where,
        showRotationControl: true,
        prefixUrl: "scripts/openseadragon-bin-2.4.2/images/",
        debugMode: true,
        tileSources: ressource
    });
    viewer.addHandler("full-screen", function (data) {
        if(data.fullScreen == false){
                $wnd.activatepanel(sie);
        }
    });
}-*/;

Я добавил обработчик, потому что сначала я подумал, что будет достаточно снова активировать панель. ($wnd.activatepanel(sie); ссылается на метод java, который делает именно это). И все же это ничего не изменило. Теперь мой вопрос: кто-нибудь знает элегантный способ переопределить sh обработчики событий в GWT или другое решение?

С уважением,

Эрик

1 Ответ

0 голосов
/ 24 апреля 2020

Я понял это:

        var viewer =  $wnd.OpenSeadragon({
        element: where,
        showRotationControl: true,
        prefixUrl: "scripts/openseadragon-bin-2.4.2/images/",
        tileSources: ressource,
    });
    viewer.addHandler("pre-full-page", function (data) {
            data.preventDefaultAction=true;
            openFullscreen();
    });
    function openFullscreen() {
        if (where.requestFullscreen) {
            where.requestFullscreen();
        } else if (where.mozRequestFullScreen) { 
            where.mozRequestFullScreen();
        } else if (where.webkitRequestFullscreen) { 
            where.webkitRequestFullscreen();
        } else if (where.msRequestFullscreen) {
            where.msRequestFullscreen();
        }
    }
...