我有一些想要附加到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只是在下一行停止。
请帮忙!
答案 0 :(得分:3)
如果未定义Xrm
,您的代码将引发异常ReferenceError: Xrm is not defined
并停止执行其余的Javascript。要检查是否存在变量,您应该使用:
if (typeof Xrm !== 'undefined') { alert('Yup'); } else { alert('Nope'); }