我尝试从控制台执行以下命令。
var subject = Xrm.Page.ui.controls.get("subject");
这就是我在我插入CRM的网络资源中使用的确切语法。但是,我只收到一条错误消息,指出“无法获取未定义或空引用的属性'控件'。”
我明白这个消息。我想知道的是双重的。
我已经检查过我可以参考 Xrm 和 Crm.Page ,但显然 ui 是 null (当我打印出 Page 的内容但是设置为 null 时,会列出它。)
答案 0 :(得分:13)
我知道这是一个有点老的线程,但是如果从控制台执行命令时,你仍然得到'对象不支持属性..'错误,IE F12;试着从框架中调用它,即
frames[0].Xrm.Page.getAttribute("controlId").getValue();
在CRM 2013中,它有点不同
frames[1].Xrm.Page
答案 1 :(得分:3)
在不同的浏览器中检测帧很难,所以这个小javascript可以帮助你:
for(var i=0;i<5;i++) //loop through 0 to 4
if(frames[i].Xrm.Page.ui != undefined) //check if undefined
{
Xrm = frames[i].Xrm; //assign Xrm
console.info("~: Xrm updated with frame " + i + " :~"); //show info
break; //breakout the loop
}
它的作用是什么?
它基本上做的是循环0-5以找到框架在哪里
Xrm.Page.ui
不是undefined
,一旦获得它就会将其分配给Xrm并打破循环。
如何使用?
要使用它,只需复制/粘贴并在浏览器控制台中运行一次 会话之后,您可以从浏览器控制台运行/测试所有 Xrm 代码。
答案 2 :(得分:2)
这对我有用Xrm.Page.getControl("controlId")
。它只是你已经拥有的捷径... cant-disable-set-to-read-only-protect-gray-out-etc-a-field
答案 3 :(得分:1)
除了@Daryl所说的,我可以补充说我使用不同的语法。出于某种原因,我也没有让他上班。可能与不同的浏览器版本或其他东西有关。相反,尝试执行此操作,如果仍然无法使其工作(尽管我必须承认他的更短=更好)。
Xrm.Page.getAttribute("lastname").getValue();
lastname 部分在创建实体联系人的实例时在一分钟前进行了测试。我只是在一个执行 onchange 的脚本中放入了一个断点,虽然是破碎的,我把上面的命令输入到控制台。
如果这两种方法都不适合您,那么您的CRM或浏览器就会遇到一些奇怪的问题。
答案 4 :(得分:0)
有些人需要此信息的原因是访问自己的代码。如果您需要从控制台访问自己的方法,那么在2011年,您的javascript中的任何全局方法(或命名空间)也都在表单[0]中。显然,从命名的角度来看,这是一个坏主意。在表单v6 +中,任何全局对象或函数都位于frame [0]内的一个名为customScriptsFrame的对象中(或者可能是找到Xrm的哪一帧)。
frames[0].customScriptsFrame.myFunctionName();