Как ведет себя «disableBrowserContextMenu» в Viewer3D. js v7? - PullRequest
0 голосов
/ 22 апреля 2020

Расскажите, пожалуйста, о поведении параметра настройки Viewer3D disableBrowserContextMenu.
, поскольку он отсутствует в Справочнике по API . ( снимок экрана )

Эта GIF-анимация была записана с { "disableBrowserContextMenu" : false }.
Если разработчик хочет использовать контекстное меню веб-браузера, стоит ли его использовать?

Мой код здесь.

Autodesk.Viewing.Initializer(options, function onInitialized(){
    // Find the element where the 3d viewer will live.    
    var htmlElement = document.getElementById('ViewerArea');
    if (htmlElement) {
        // Create and start the viewer in that element    
        var config = { "disableBrowserContextMenu" : false };
        viewer = new Autodesk.Viewing.GuiViewer3D(htmlElement, config);
        viewer.start();
        // Load the document into the viewer.
        Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
    }
});

С https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=7.14

Viewer3D.prototype.initContextMenu = function() {
    // Disable the browser's default context menu by default, or if explicitly specified.
    //
    var disableBrowserContextMenu = !this.config || (this.config.hasOwnProperty("disableBrowserContextMenu") ? this.config.disableBrowserContextMenu : true);
    if (disableBrowserContextMenu) {
        this.onDefaultContextMenu = function (e) {
            e.preventDefault();
        };
        this.container.addEventListener('contextmenu', this.onDefaultContextMenu, false);
    }
    var self = this;
    var canvas = this.canvas || this.container;
    this.onMouseDown = function(event) {
        if (EventUtils.isRightClick(event)) {
            self.startX = event.clientX;
            self.startY = event.clientY;
        }
    }
    canvas.addEventListener( 'mousedown', this.onMouseDown);
    this.onMouseUp = function(event) {
        if (EventUtils.isRightClick(event) && event.clientX === self.startX && event.clientY === self.startY) {
            self.triggerContextMenu(event);
        }
        return true;
    }
    canvas.addEventListener( 'mouseup', this.onMouseUp, false);
};

1 Ответ

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

Да disableBrowserContextMenu - это опция инициализации / построения Viewer, которая отключает встроенное контекстное меню, которое поставляется вместе с Viewer, и вы правильно используете его со своим кодом в OP.

const config = {
   disableBrowserContextMenu:false
//...
}
new Autodesk.Viewing.GuiViewer3D(container,config)

Мы В течение следующих нескольких месяцев мы будем всесторонне улучшать документацию по нашим услугам, и я сообщу команде, чтобы она попыталась заполнить недостающие фрагменты, подобные этой.

Спасибо за ваш полезный отзыв!

...