这很奇怪,我觉得有点愚蠢。
在CRM中,我点击 F12 并检查黄色警告部分是ID为 Notifications 的DIV(以及名为 Notification0 的子DIV) , Notification1 等。)。
然而,当我去document.getElementById("Notifications")
时,我蹲了下来。 WTF?!
此外,当我去document.write("")
时,没有任何改变。在Cr和FF中,确实如此,但IE没有反应。我疯了吗?
编辑:
以上是拼写错误。当我尝试执行时:
document.getElementById("crmNotifications")
我得到nada,不是......建议?
答案 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
对象,它也是一样的。