繁体   English   中英

为什么最新版本的伪造查看器会破坏我的onClick侦听器?

[英]Why does the latest version of the forge viewer break my onClick listener?

摘要

最新版本的伪造查看器(6.6.0)在我的控制台中引发“意外令牌”错误,我的某些$(button).on('click')事件将不再绑定到我的自定义面板中(请求的尽管有错误,模型仍会加载)

我尝试过的

我将查看器恢复为6.5.0版,并且我的代码可以正常工作,还删除了除初始化逻辑以外的所有代码,但仍然出现控制台错误。 我还尝试了所有绑定事件的方法,但在最新的查看器版本( $(document).on('click', 'myButton', this.onMyButtonClick)$('#myButton).click(this.onMyButtonClick) $(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'."}

Chrome控制台错误消息

带按钮面板头

面板图像

编辑 :使用标题面板中的按钮进行测试并在主要的浏览器上工作,现在是此处的示例。 将让Engineering知道这正在改变变革,但我怀疑他们不鼓励在此处放置控件

    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')
    }
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM