如何获取页面元素?

时间:2013-03-27 15:07:17

标签: javascript dynamics-crm-2011

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

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

然而,当我去document.getElementById("Notifications")时,我蹲了下来。 WTF?!

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

编辑:

enter image description here

以上是拼写错误。当我尝试执行时:

document.getElementById("crmNotifications")

我得到nada,不是......建议?

3 个答案:

答案 0 :(得分:4)

你并不疯狂,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元素的原因 - 因为当从Console运行javascript时你就在父窗口的上下文中。当您指定window.frames[0]时,它会为您提供页面上的第一个IFrame(实际上只有一个IFrame),在其中您可以获得crmNotifications,因为它就在那里。

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

答案 1 :(得分:3)

你可能不是一点点疯了:D如果我看得好通知通知是不是id的类。 id是crmNotifications。 我写了通知,我的书签中有link

答案 2 :(得分:1)

尝试

frames[0].document.getElementById('crmNotifications')

无论出于何种原因,您都需要frames[0]位。如果您也想使用Xrm对象,它也是一样的。