javascript - 如何获取页面元素?

标签 javascript dynamics-crm-2011

这很奇怪,我觉得有点愚蠢。

在 CRM 中,我按下 F12 并检查黄色警告部分是一个 ID 为 Notifications 的 DIV(以及名为 Notification0 的子 DIV 、Notification1 等)。

但是,当我访问 document.getElementById("Notifications") 时,我蹲下了。什么鬼?!

此外,当我访问 document.write("") 时,没有任何变化。在 Cr 和 FF 中,确实如此,但 IE 没有反应。我疯了吗?

编辑:

enter image description here

以上是错别字。当我尝试执行时:

document.getElementById("crmNotifications")

我明白了,也没有……有什么建议吗?

最佳答案

你没疯,CRM 和浏览器也没什么问题:)

如果您从浏览器的控制台运行 javascript,则您处于整个页面的 window 上下文中。然而,CRM 表单内容位于 contentIFrame iframe 中。 IFrame 实际上是单独的页面,您甚至可以将此 iframe 在 F12 开发人员工具中指向的链接编辑为您想要的任何其他链接。尝试将其中的 src 属性更改为 http://www.bing.com ,您将在 CRM 窗口中看到 Bing 主页(仅保留功能区):

<iframe title="This is IFrame" id="contentIFrame" src="http://www.bing.com" 
        style="width: 100%; height: 100%; border-top-style: none; 
               border-right-style: none; border-bottom-style: none; 
               border-left-style: none; display: inline;" >

这就是为什么您无法获取 crmNotifications DOM 元素的原因 - 因为当从控制台运行 javascript 时,您处于父窗口的上下文中。当您指定 window.frames[0] 时,它将为您提供页面上的第一个 IFrame(实际上只有一个),在其中您将能够获得 crmNotifications,因为它就在那里。

当您运行通过 CRM 自定义添加的自定义脚本时 - 它们链接到内部表单页面(IFrame 指向),这就是为什么您可以从这些脚本中直接获取 crmNotifications,因为您已经在“内容”页面上下文中。

关于javascript - 如何获取页面元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15662236/

相关文章:

c# - Task Parallel Library 是否提供了一种方法来合并打开的连接?

javascript - 客户关系管理 2011 : Set datetime field from string with javascript

javascript - 如何以相反的顺序迭代 JavaScript 对象?

javascript - 测试服务依赖于其他有 promise 的服务(Karma - Angular)

javascript - 在 elevateZoom 中禁用 Hover for Mobile 设备的缩放效果

javascript - 如果帐户有相关实体记录,则显示弹出窗口/警报

c# - 通过工作流更新字段,更好的方法?

dynamics-crm-2011 - 可复制值的不可更改表单字段的最佳实践(2011/2013 在线)

javascript - 对象的 Angular ng-repeat 索引

javascript - Ace JS 编辑器 - 在编辑器中启用/禁用撤消和重做按钮