我正在构建一个角度应用程序,它在Dynamics 2013上作为Web资源运行.

应用程序使用一个按钮运行,该按钮使用Ribbon工作台添加到commandContainer,然后该按钮调用Xrm.Internal.openDialog

所有这一切都正常,直到我想开始使用Xrm.Page.Data公开的实体

基本上我的按钮在动态主页面的上下文中运行,但是实体在iframe中,基于我所在的页面具有不同的Id和名称.

所以使用一个简单的选择器我无法得到它的contentwindow并开始使用实体.

#crmContentPanel总是包含很少的iframe,从#contentIFrame0到#contentIFrame(n),我永远不知道哪个iframe是包含实体的iframe.

在此环境中开发应用程序的最佳实践和相关工作流程是什么?如何轻松可靠地访问保存主页面实体并使用它们的正确框架.

也许脚本位于错误的位置,需要注入主内容区域,以便直接访问正确的Xrm?我怎样才能做到这一点?

此外,一旦我最终设法访问这些数据,我怎样才能轻松地将这些数据传递给我在对话框中运行的角度应用程序,从我读到的文档中,对话框只允许1个查询字符串参数,并且必须将其称为数据.这对我的应用程序开始使用$routeParams来说是不够的.我不认为使用本地或会话存储是很好的做法.在这种情况下,正确的方法是什么.

我的按钮脚本的示例代码:

function runSendSender() {

    // Content Iframe Entity data:
    var contentFrameXrm = $('#crmContentPanel')
                       .find("iframe#contentIFrame0...n")[0]
                       .contentwindow['Xrm'];

    // even if above selector was consistent across pages
    // I need to send over much more than this one Id :(
    var data = contentFrameXrm.Page.data.entity.getId();

    var src = "/WebResources/concep_/ConcepDynamicsApp/ConcepDynamicsApp.html?data=" + data;
    var Dialogoptions = new Xrm.Dialogoptions();
    Dialogoptions.width = 800;
    Dialogoptions.height = 500;
    Xrm.Internal.openDialog(src,Dialogoptions,null,CallbackFunction);

    function CallbackFunction(returnValue) { }
}

更多细节

当我在控制台中键入以下内容时,我有时(随机)读取表单的标题:

$('#crmContentPanel').find("iframe#contentIFrame0")[0].contentwindow['Xrm'].Page.ui.get_formTitle();

但是相关网络资源功能中的相同代码无法访问iframe和错误:

Can not Cannot read property 'contentwindow' of undefined.

为什么iframe无法通过资源脚本访问,如何访问正确的上下文和表单title / id.

解决方法

记录ID可以通过功能区本身作为参数发送到runSendSender.只需将相应的CrmParameter( MSDN)添加到函数调用中即可.

在您的情况下,参数值将是FirstPrimaryItemId(“提供一个GUID标识符作为正在查看的记录的字符串.”)

在那之后,你将改变你的功能

function runSendSender(recordId) { ... }

另外,要远离内部:要在对话框中打开Web资源,您应该使用the supported way(链接提供有关将除数据以外的参数传递给资源的信息).

Xrm.Utility.openWebResource(webResourceName,webResourceData,width,height)

javascript – 使用基于iframe的视图很难访问Dynamics 2013访问网页实体的更多相关文章

  1. 详解Html5页面实现下载文件(apk、txt等)的三种方式

    这篇文章主要介绍了详解Html5页面实现下载文件(apk、txt等)的三种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 详解使用postMessage解决iframe跨域通信问题

    这篇文章主要介绍了详解使用postMessage解决iframe跨域通信问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. 基于HTML十秒做出淘宝页面

    十分钟做出一个网页,看似不可思议,下面小编给大家带来了基于HTML十秒做出淘宝页面,只分为两步,代码超级简单,需要的朋友参考下吧

  4. html5唤起app的方法

    这篇文章主要介绍了html5唤起app的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. 跨域修改iframe页面内容详解

    这篇文章主要介绍了跨域修改iframe页面内容详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. 使用postMessage让 iframe自适应高度的方法示例

    这篇文章主要介绍了使用postMessage让 iframe自适应高度的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  7. ios – Cordova 3.7在每个本机通话中复制iframe

    由于我已升级到Cordova3.7,每个本地调用都将一个新的iframe附加到DOM,如下所示.为了排除我现有的代码影响cordova的可能性,我尝试使用cordovaCLI创建一个新的代码,添加控制台插件,并在设备控制台中的setInterval循环中调用console.log().因此,我在DOM中收到了大量的iframe.我在iPad3,iOS7上尝试过使用xCode6构建应用程序.有没有人遇到这个问题?

  8. swift – 与WKWebView进行JavaScript同步本地通信

    使用WKWebView可以在JavaScript和Swift/Obj-C本机代码之间进行同步通信吗?

  9. android – 如何在webview中使用iframe播放vimeo视频?

    在谷歌研究之后,我写了上面的代码,但没有工作.在这个没有错误发生,但是当我点击播放按钮进度条显示一段时间,然后它消失并再次显示播放按钮…有人可以建议我如何解决这个问题?

  10. html5唤醒APP小记

    这篇文章主要介绍了html5唤醒APP小记的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部