This code has been tested for Sharepoint 2010 only. It permits to expand by default (so as soon as the page is loaded) the events in the Month calendar view.
See here a solution for Sharepoint 2013.
Tested with IE8 and Firefox 34. You’ll have to add the below JavaScript code into your calendar page:
// the below function simulate a click on a link function fireEventClick(elem){ if(document.createEvent){ var e = document.createEvent('MouseEvents'); e.initMouseEvent('click', /* Event type */ true, /* Can bubble */ true, /* Cancelable */ document.defaultView, /* View */ 1, /* Mouse clicks */ 0, /* Screen x */ 0, /* Screen y */ 0, /* Client x */ 0, /* Client y */ false, /* Ctrl */ false, /* Alt */ false, /* Shift */ false, /* Meta */ 0, /* Button */ null); /* Related target */ elem.dispatchEvent(e); } else { // pour IE elem.click(); } } // wait for all the events to be loaded _spBodyOnLoadFunctionNames.push('changeCalendarEventLinkIntercept'); function changeCalendarEventLinkIntercept() { var OldCalendarNotify4a = SP.UI.ApplicationPages.CalendarNotify.$4b; SP.UI.ApplicationPages.CalendarNotify.$4b = function () { OldCalendarNotify4a(); // here all the events are loaded so we can expand them setTimeout(function() { ExpandEvents(0) }, 250) } } // Expand the events // because Sharepoint redraw ALL the events when we click on Expand, then we need a special recurrent function function ExpandEvents(idx) { var a = document.querySelectorAll('a[evtid="expand_collapse"]'); if (idx < a.length) { if (a[idx].parentNode.getAttribute("_expand") !== "collapse") fireEventClick(a[idx]); ExpandEvents(++idx); } } ExpandEvents(0)
Thanks! This is exactly what I was looking for to expand events on the calendar by default. Much appreciated.