Когда-то была такая подзадача: при нажатии в crm форме на менюшку слева выдать не стандартное представление crm, а свою страничку. Впрочем, не важно, страничку туда вешать или какое-то свое «событие», смысл в том, чтобы переопределить функцию, которая вызывается при нажатии на определенный пункт навигационного меню.
Расскажу как это сделать на маленьком тестовом примере. Будем работать с сущностью Обращение и менюшкой «Действия» слева. Например, надо чтобы в Обращении при нажатии на Действия грузилась ваша aspx/html-страничка (не важно).
По пути где установлена MS CRM (в папке CRMWeb) я создала папку customHTML, а в ней обычный html-файл c именем test.html.
Теперь надо выяснить как называется area, которую нам нужно переопределить, открываем любое Обращение, жмем Ctrl+N, и выбираем View->Source.
По файлу ищем слово Activities («Действия» это ведь Activities). В данном случае нас интересует функция loadArea, так как она вызывается при onclick и отвечает за те события, которые происходят при нажатии на пункт менюшки (Это также можно сделать с помощью Fiddler’а).
Нашли как называется нужная нам Area, в моем случае это areaActivities, теперь переопределим функции. Прописываем этот код в событие Onload сущности Обращение:
OldloadArea = loadArea;
window.f_reaction = function ()
{
url=’/customHTML/test.html’;
OldloadArea (‘areaActivities’, null,url);
}
loadArea = function (a) {
if (a != ‘areaActivities’) return OldloadArea (a);
setTimeout(‘f_reaction ()’, 1000);
}
Тут использую setTimeout только потому, что иногда код не успевает сработать и грузится стандартная area, так что лучше сделать задержку на секундочку
Ну и вот результаты. Вот так было:
А вот так стало:




