Самая последняя версия 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'."}
РЕДАКТИРОВАТЬ: Протестировано и работает в основных браузерах с кнопкой на панели заголовка теперь - живой образец здесь. Сообщит инженерам, что это нарушает изменения, но я сомневаюсь, что они будут препятствовать размещению там элементов управления.
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')
}
}
Кроме того, ваш пример помещает кнопку в тело панели. Я переместил его в строку заголовка панели, и событие клика перестало работать в версии 6.6. Увидите, что здесь
см. редактирование - сомневаюсь, что 2/3d имело какое-либо отношение к этому, хотя определенно имело отношение к строке заголовка, фиксирующей событие нажатия кнопки мыши, прежде чем он получил возможность просочиться к кнопке. Однако это поведение невозможно воспроизвести в Firefox.
Спасибо за помощь, пожалуйста, дайте мне знать, когда проблема будет решена. Вы знаете, почему я получаю ошибки в консоли Chrome? вроде ни на что не влияют
6.5
вместо6.*
, все работает. Вам нужно будет добавить урну и жетон в строке 76 и 70.