Почему последняя версия средства просмотра forge ломает мой прослушиватель onClick?

Резюме

Самая последняя версия forge viewer (6.6.0) выдает ошибку «неожиданный токен» в моей консоли, и некоторые из моих событий $(button).on('click') больше не будут связываться в моих пользовательских панелях (запрошенный модель загружается несмотря на ошибки)

Что я пробовал

Я отключил средство просмотра до версии 6.5.0, и мой код работает, я также удалил весь код, кроме логики инициализации, и я все еще получаю ошибки консоли. Я также перепробовал все возможные способы привязки события, и ни один из них не работает в последней версии средства просмотра ($(document).on('click', 'myButton', this.onMyButtonClick), $('#myButton).click(this.onMyButtonClick), $('myButton').bind('click', this.onMyButtonClick), $('myButton').on('click', this.onMyButtonClick)).

Код

Ссылки для просмотра

<link rel = "stylesheet" href = "https://developer.api.autodesk.com/modelderivative/v2/viewers/6.*/style.min.css" type = "text/css">
<script src = "https://developer.api.autodesk.com/modelderivative/v2/viewers/6.*/viewer3D.min.js"></script>

Логика инициализации

const options = {
    env: `AutodeskProduction`,
    getAccessToken: getForgeToken
  };
  const documentId = `urn:${urn[`urn_string`]}`;

  Autodesk.Viewing.Initializer(options, function onInitialized() {
    Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
  });

  function onDocumentLoadSuccess(doc) {
      $(`.navbar-div`).css(`margin-bottom`,`10px`);
      const viewable = Autodesk.Viewing.Document.getSubItemsWithProperties(doc.getRootItem(), {
        'type': `geometry`,
        'role': `2d`
      }, true);
      if (viewable.length === 0) {
        return;
      }

      const initialViewable = viewable[0];
      const svfUrl = doc.getViewablePath(initialViewable);
      const modelOptions = {
        sharedPropertyDbPath: doc.getPropertyDbPath()
      };

      const viewerDiv = document.getElementById(`viewer`);
      viewer = new Autodesk.Viewing.Private.GuiViewer3D(viewerDiv);

      viewer.start(svfUrl, modelOptions, onLoadModelSuccess, onLoadModelError);
  }

Неработающее событие клика

class MyExtension extends Autodesk.Viewing.Extension {
    constructor(viewer) {
      super();
      Autodesk.Viewing.Extension.call(this, viewer);
    }
    createPanel() {
      const Panel = new Autodesk.Viewing.UI.DockingPanel(NOP_VIEWER.container, `myPanel`, `Title`);
      $(Panel.container).append(*some html*);
      Panel.setVisible(true);
      $(`#myPanel`).find(`.docking-panel-close`).remove();
      $(`#myPanel`).find(`.docking-panel-title`).append(myButton);
      $(`#myButton`).click(this.onMyButtonClick.bind(this));
    }
    onMyButtonClick() {
        alert('here');
    }
  }

Autodesk.Viewing.theExtensionManager.registerExtension(`myExtension`, MyExtension);

Ошибки и скриншоты

Сообщение об ошибке в консоли

SyntaxError: Unexpected token (
    at Object.E [as doOperation] (84a694cc-2244-4f8f-90ea-4d32694ed224:13)
    at t.value (84a694cc-2244-4f8f-90ea-4d32694ed224:13)
    at 84a694cc-2244-4f8f-90ea-4d32694ed224:13
Uncaught (in promise) {msg: "Error while importing 'userFunction'."}

Почему последняя версия средства просмотра forge ломает мой прослушиватель onClick?

Заголовок панели с кнопкой

Почему последняя версия средства просмотра forge ломает мой прослушиватель onClick?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
396
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

РЕДАКТИРОВАТЬ: Протестировано и работает в основных браузерах с кнопкой на панели заголовка теперь - живой образец здесь. Сообщит инженерам, что это нарушает изменения, но я сомневаюсь, что они будут препятствовать размещению там элементов управления.

    class MyExtension extends Autodesk.Viewing.Extension {
    constructor(viewer) {
      super(viewer);
      this.createPanel()

    }
    createPanel() {
      const Panel = new Autodesk.Viewing.UI.DockingPanel(NOP_VIEWER.container, `myPanel`, `Title`);
      Panel.setVisible(true);
      $(`#myPanel`).height('100').offset({ top: 10, left: 30 }).find(`.docking-panel-close`).remove();
      $(`#myPanel`).append($('<button/>').text('Test').mousedown(this.onMyButtonClick.bind(this)))
    }
    onMyButtonClick(e) {
        e.stopPropagation();
        alert('here')
    }
  }
здесь — живой пример моей проблемы. Кроме того, мои извинения, я должен был упомянуть, что я работаю с 2D-просмотрщиком, а не с 3D-просмотрщиком. В этом примере есть ошибки, которые я упомянул в консоли Chrome, и неработающее событие щелчка, но если вы измените голову, чтобы загрузить 6.5 вместо 6.*, все работает. Вам нужно будет добавить урну и жетон в строке 76 и 70.
Wesley Reed 16.05.2019 16:02

Кроме того, ваш пример помещает кнопку в тело панели. Я переместил его в строку заголовка панели, и событие клика перестало работать в версии 6.6. Увидите, что здесь

Wesley Reed 16.05.2019 16:51

см. редактирование - сомневаюсь, что 2/3d имело какое-либо отношение к этому, хотя определенно имело отношение к строке заголовка, фиксирующей событие нажатия кнопки мыши, прежде чем он получил возможность просочиться к кнопке. Однако это поведение невозможно воспроизвести в Firefox.

Bryan Huang 17.05.2019 06:34

Спасибо за помощь, пожалуйста, дайте мне знать, когда проблема будет решена. Вы знаете, почему я получаю ошибки в консоли Chrome? вроде ни на что не влияют

Wesley Reed 17.05.2019 15:21

Другие вопросы по теме