It may be more of a silly mistake on my side, but I ran into an interesting problem today that took me a while to resolve. Since I cannot find any information on this anywhere on the web, I thought I may as well write a blog entry on it.
While trying to access the "Xrm.Page.ui" object, I kept on getting an error saying:
'Xrm.Page.ui' is null or not an object.
Turns out that somewhere along the line, I did not have my code inside my JScript Resource file wrapped in a method, and I did not actually call this method on load of the form.
So I simply had:
alert(Xrm.Page.ui.getFormType());
Instead of:
function myFunction()
{
alert(Xrm.Page.ui.getFormType());
}
where the above function is then called on load of the entity.
This lead to a few interesting observations:
- It is possible to execute code BEFORE onLoad, by simply not wrapping the code in the Web Resource in a function. Even though this is true, I'd say it is probably very bad practice to "forget" to wrap it in a function/
- When JScript is not wrapped in a function, it not only executes BEFORE onLoad, it executes before any Crm objects are initialized. So the developer does not have access to any CRM SDK objects at this point.
- I should STOP making noob mistakes ;)
Paul Reyneke