JavaScript: console.log error

When working in JavaScript I have done output with console.log, but after that my page was working correctly only in debug mode.

I have found the solution in the page What is console.log and how do I use it?: the reason is that in Internet Explorer up to version 8, console.log is defined only in debug mode.

The solution is to add in your page the following JavaScript code:

   if(!window.console){ window.console = {log: function(){} }; }

JavaScript: how call cross-domain Ajax services

For one big company I have developed a project where I had to call JSON services from client html pages.

The particularity was that the services where hosted in a domain different from the domain of the hosted pages.

I have found some difficulties, and here is a list of tips:

  • Internet Explorer requires the use of the object XDomainRequest
  • if the calling page is served in https, the JSON service has to called in https too
  • the receiving service must accept cross-domain calls and must declare this adding the following header:
          Access-Control-Allow-Origin: *

Some (but not all) of this guidelines is in the article Cross Domain Ajax Request with JSON response for IE,Firefox,Chrome, Safari – jQuery.

SharePoint 2010: How check if a folder exists

In SharePoint client object model, I needed to check if a folder exists.
In the post How to check if folder subfolder already exists in SharePoint document library using SharePoint web service I have found the (almost) correct query to be used. It is missing and close and open <Eq> tag.

The correct version is:
<FieldRef Name='FileLeafRef' />
<Value Type='Text'>[your Folder name]</Value>
<FieldRef Name='FSObjType'/>
<Value Type='Text'>1</Value>

SharePoint: integrate the Lync presence control in your pages and web parts

For one organizational chart page I needed to incorporate the Lync presence control next to each name. Practically I wanted to replicate what you get when you show a list containing a people picker field, but without using a field of this type.


I have found the article Integrate Lync into your intranet sites using the NameCtrl plug-in.

Only a few notes on the article:

  • 'case' is a JavaScript keyword, so when it is used as a field in the DIV, it has to be enclosed between quotes;
  • when creating the id of the control, in the getId function, it's needed to use a replaceAll function for SIDs like

SharePoint and JavaScript CSOM

I'm relizing that I'm spending too much time googling the same topics over and over (on JavaScript programming), so I list here a few solution I need in a recurrent way.


JavaScript: how understand if page is opened in iFrame, and get its url


Javascript: how get url parameters

  • function to get query string parameters:
    function getURLParameter(name) {
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(||[,""])[1].replace(/\+/g, '%20'))||null
  • source: How to get URL parameters with Javascript?


Javascript: function to format numbers


Javascript: function to format date-times


Javascript: how html encode strings


jQuery: how write a custom filter method

SharePoint: how add submenus in the top link bar

In SharePoint, without the Publishing Feature enabled, it's not possible to add sub-menus in the top link bar (except for sub-sites and related pages).

This is quite limiting, because it doesn't allow to organize menus in sites with many pages.

Luckily, I have found the solution in the article How can I add a dropdown menu to the Sharepoint Foundation top navigation bar?

Essentially, it's enough to import the file spf-dropdown2010.js or spf-dropdown2013.js after jQuery.


I have tried the solution above, and it worked, but it had the following:

  • PRO: possibility for the user to customize the sub-menus via SharePoint UI
  • CON: each time the page is loaded, the sub-menu items are seen for a short time
  • CON: for internal pages without the script, the sub-menus are not generated and so this doesn't give a nice UI (this point is valid in case it's not possible to modify the master page)


So I have changed implementation of the solution with the code below:




      .append('<UL class=dynamic></UL>')


      .append('<LI class="spfDropdowns-submenuitem dynamic"><A class="menu-item dynamic" href="Url1"><SPAN class=additional-background><SPAN class=menu-item-text>Descr1</SPAN></SPAN></A></LI>')

      .append('<LI class="spfDropdowns-submenuitem dynamic"><A class="menu-item dynamic" href="Url2"><SPAN class=additional-background><SPAN class=menu-item-text>Descr2</SPAN></SPAN></A></LI>');