这很奇怪,我觉得有点愚蠢。
在 CRM 中,我按下 F12 并检查黄色警告部分是一个 ID 为 Notifications 的 DIV(以及名为 Notification0 的子 DIV 、Notification1 等)。
但是,当我访问 document.getElementById("Notifications")
时,我蹲下了。什么鬼?!
此外,当我访问 document.write("")
时,没有任何变化。在 Cr 和 FF 中,确实如此,但 IE 没有反应。我疯了吗?
编辑:
以上是错别字。当我尝试执行时:
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/