【问题标题】:How to pass values from HTML webresource to javascript on window close MSCRM如何在窗口关闭 MSCRM 上将值从 HTML webresource 传递到 javascript
【发布时间】:2019-10-29 10:06:02
【问题描述】:
我正在使用Xrm.Navigation.openWebResource 打开 HTML 网络资源,但在关闭 HTML 窗口时,我想将值从 HTML 传递到打开它的 javascript 文件。有回调函数可以实现吗?
如果我使用 window.open 打开 HTML 窗口,我可以在关闭时使用 window.opener.functionname 调用父 javascript 函数,但单击但我想知道如何在关闭按钮单击 HTML 窗口时将值传递给父 javascript 文件。
我尝试使用 window.parent.opener.Functionname() 但它不起作用 - 得到 functionname is undefined 但它是在父 javascript 中定义的。请建议。
【问题讨论】:
标签:
javascript
html
dynamics-crm
customization
【解决方案1】:
如果您使用启用了 turboforms 的“旧”(因为它不是统一的界面)用户界面,那么父级 javascript 实际上是在一个名为 customScriptFrame 的额外 iframe 中,而不是在父级本身上。
要调用父级的东西,你可以使用
parent.customScriptsFrame.functionname() for IE
和
parent.customScriptsFrame.contentWindow.functionname() on chrome.
在统一界面上大体相同,但麻烦得多。
现在脚本位于名为 ClientApiFrame_[n] 的 iframe 中,其中 [n] 是一些随机数。而且我还没有找到一种从网络资源中提前确定该数字的好方法。
您可以在 javascript (parent.frames) 中查看父级的所有帧,以找到一个 id 以 ClientApiFrame_ 开头的帧,但这会在尝试读取源设置为外部域的帧时抛出错误,我认为这不是很好练习。
另一种可能性是提前向父级注册要调用的函数。所以在主javascript中使用这个。
parent.functionname = functionname
然后从webResource就可以正常使用了
parent.functionname
【解决方案2】:
如果网页资源嵌入到表单中,则使用window.parent
如果你Xrm.Navigation.openWebResource打开它,那么使用window.opener