你没有疯,CRM 和浏览器也没有错 :)
如果您从浏览器的控制台运行 javascript,则您处于window
整个页面的上下文中。然而,CRM 表单内容位于contentIFrame
iframe 中。IFrames 实际上是单独的页面,您甚至可以编辑此 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
直接从这些脚本中获取的原因,因为您已经在“内容”页面上下文中。