Как управлять HTML-веб-ресурсом в Dynamics CRM

У меня есть веб-ресурс для Dynamics CRM. Проект будет загружен в AppSource. Он состоит из .html- и .js-файлов. Если я попытаюсь получить элементы .html-файла с помощью document.getElementById в .js-файле, я получаю сообщение об ошибке, что DOM-операции не поддерживаются.

Как мне манипулировать моим .html-файлом с .js-файлом?

Как зарегистрировать событие клика?

Я надеюсь, что вы можете помочь мне там.

ИЗМЕНИТЬ

Я только что решил первый вопрос:

Чтобы получить доступ к DOM-элементу, мне нужно было использовать этот код:

Xrm.Page.getControl(WEBRESOURCE_NAME).getObject().contentDocument.getElementById(id);

Но как зарегистрировать события на элементах?

ИЗМЕНИТЬ 2

Я попытался зарегистрировать события следующим образом:

element.ondragenter = function() {...}

а вот так:

element.addEventListener("change", function() {...})

Обе строки получают одну и ту же ошибку:

'element.onclick = имя_функции' регистрирует или отменяет регистрацию дескрипторов события объектной модели документа (DOM) приложения, управляемого моделью. Этот метод не поддерживается во всех версиях Dynamics 365 и PowerApps и должен быть заменен поддерживаемым подходом для регистрации обработчиков событий на стороне клиента.

ИЗМЕНИТЬ 3

Я нашел решение для регистрации событий (см. мой собственный ответ). Теперь у меня проблема: я использую FileReader в своем .js-скрипте, который использует события onloadend и onerror. И естественно crm не дает мне прописать события в файле из-за ошибки выше.


person Dennis Rieke    schedule 14.01.2020    source источник
comment
возможно, это помогает   -  person balexandre    schedule 14.01.2020
comment
К сожалению, нет. Это просто объясняет, как я могу получить все данные из CRM или сущностей, но мне нужно было получить доступ к элементам другого веб-ресурса.   -  person Dennis Rieke    schedule 14.01.2020


Ответы (1)


Решение состояло в том, чтобы регистрировать события из .html, а не из .js.

 <div class="DropArea" id="DropArea" ondrop="OnDrop(event)">
person Dennis Rieke    schedule 14.01.2020