为什么我无法检测到CRM2011中不存在Xrm对象/功能

时间:2012-06-20 10:57:44

标签: javascript dynamics-crm-2011

我有一些想要附加到MS动态CRM 2011中的表单和HTML网页资源的JavaScript。它需要Xrm对象,可以在表单上下文中直接使用,也可以通过window.top.Xrm获得。在HTML网络资源中。

我以为我会编写一个快速函数来检查是否定义了Xrm,这样我就可以确定我是在表单中运行还是在HTML Web资源中运行。作为一个起点,因为我是javascript的新手,我编写了这段代码来检查Xrm是否存在并显示消息。

alert('Running'); 
if(Xrm) { alert('Yup'); } else { alert('Nope'); }
alert('Done'); 

然而,这不起作用,我不明白为什么。当它在表单事件中运行时,例如表单加载,Xrm存在,我看到警告“正在运行”,“是”和“完成”。但是,当在HTML Web资源中运行时,Xrm不能直接使用,我看到“正在运行”警报,但javascript只是在下一行停止。

请帮忙!

1 个答案:

答案 0 :(得分:3)

如果未定义Xrm,您的代码将引发异常ReferenceError: Xrm is not defined并停止执行其余的Javascript。要检查是否存在变量,您应该使用:

if (typeof Xrm !== 'undefined') { alert('Yup'); } else { alert('Nope'); }