如何在 Dynamics CRM 中操作 HTML-Webresource
How to manipulate a HTML-Webresource in Dynamics CRM
我有 Dynamics CRM 的网络资源。该项目将上传到 AppSource。它由一个 .html- 和一个 .js 文件组成。如果我尝试在 .js 文件中使用 document.getElementById 获取 .html 文件的元素,我会收到错误消息,即 DOM-Operations 不受支持。
如何使用 .js 文件操作我的 .html 文件?
如何注册点击事件?
我希望你能帮助我。
编辑
我刚刚解决了第一个问题:
要访问 DOM-元素,我需要使用此代码:
Xrm.Page.getControl(WEBRESOURCE_NAME).getObject().contentDocument.getElementById(id);
但是如何在元素上注册事件?
编辑 2
我试过这样注册事件:
element.ondragenter = function() {...}
像这样:
element.addEventListener("change", function() {...})
两行得到相同的错误:
'element.onclick = functionName' registers or unregisters handles to a document object model (DOM) event of a model-driven app. This technique is unsupported in all versions of Dynamics 365 and PowerApps and should be replaced with a supported approach for registering client-side event handlers.
编辑 3
我找到了事件注册的解决方案(参见我自己的回答)。
现在我遇到了问题,我在 .js 脚本中使用了 FileReader,它使用了 onloadend 和 onerror 事件。当然,由于上述错误,crm 不允许我在文件中注册事件。
解决方案是从 .html 而不是 .js.
注册事件
<div class="DropArea" id="DropArea" ondrop="OnDrop(event)">
我有 Dynamics CRM 的网络资源。该项目将上传到 AppSource。它由一个 .html- 和一个 .js 文件组成。如果我尝试在 .js 文件中使用 document.getElementById 获取 .html 文件的元素,我会收到错误消息,即 DOM-Operations 不受支持。
如何使用 .js 文件操作我的 .html 文件?
如何注册点击事件?
我希望你能帮助我。
编辑
我刚刚解决了第一个问题:
要访问 DOM-元素,我需要使用此代码:
Xrm.Page.getControl(WEBRESOURCE_NAME).getObject().contentDocument.getElementById(id);
但是如何在元素上注册事件?
编辑 2
我试过这样注册事件:
element.ondragenter = function() {...}
像这样:
element.addEventListener("change", function() {...})
两行得到相同的错误:
'element.onclick = functionName' registers or unregisters handles to a document object model (DOM) event of a model-driven app. This technique is unsupported in all versions of Dynamics 365 and PowerApps and should be replaced with a supported approach for registering client-side event handlers.
编辑 3
我找到了事件注册的解决方案(参见我自己的回答)。 现在我遇到了问题,我在 .js 脚本中使用了 FileReader,它使用了 onloadend 和 onerror 事件。当然,由于上述错误,crm 不允许我在文件中注册事件。
解决方案是从 .html 而不是 .js.
注册事件 <div class="DropArea" id="DropArea" ondrop="OnDrop(event)">