如何从一个控制台访问控制(How to access controls from a console

2019-08-05 17:49发布

我试图从控制台执行以下命令。

var subject = Xrm.Page.ui.controls.get("subject");

这是我用在我堵到CRM是网络资源的确切语法。 不过,我只得到了一个错误信息说“无法获得属性‘控制’的未定义或空引用”。

我明白了消息。 我想知道的是双重的。

  1. 什么语法将会从控制台(F12)合作,指的是东西在屏幕上?
  2. 为什么它不工作,我做的方式? 凡没有按UI从何而来?

我检查,我可以同时参考XRMCrm.Page但显然UI (当我打印出来的页面 ,但SETT的内容为它的上市)。

Answer 1:

除了什么@Daryl说,我可以补充一点,我用不同的语法。 出于某种原因,我没有得到他的任何工作。 可能与不同的浏览器版本或事做。 相反,尝试执行此,如果您仍然无法得到它的工作(尽管我必须承认,他是短=越好)。

Xrm.Page.getAttribute("lastname").getValue();

姓氏部件进行测试一分钟前在创建实体联系的一个实例。 我只是把一个断点被平变化执行的脚本内,而破碎指出,我在上面输入到控制台的命令。

如果没有办法为你工作,你有你的CRM或浏览器的一些奇怪的问题。



Answer 2:

我知道这是一个有点老线,但如果你仍然收到这个“对象不支持属性..”执行从控制台的命令时的错误,IE F12; 尝试从框架,即调用它

frames[0].Xrm.Page.getAttribute("controlId").getValue();

在CRM 2013这是一个有点不同

frames[1].Xrm.Page


Answer 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码形成浏览器控制台。



Answer 4:

这对我的作品Xrm.Page.getControl("controlId") 这只是对你有什么已经虽然...一个快捷方式倾斜,禁止设置到只读保护灰色-OUT-等-A-场



Answer 5:

一个原因有些人需要这些信息来访问自己的代码。 如果您需要从控制台访问你自己的方法,在2011年,在你的JavaScript任何全局方法(或命名空间)也分别在表格[0]。 显然,这是一个坏主意,只是从一个命名的立场。 在形式V6 +任何全局对象或功能是在所谓的customScriptsFrame内部帧中的对象[0](或可能取帧中的XRM被发现)。

frames[0].customScriptsFrame.myFunctionName();



文章来源: How to access controls from a console