If you face an issue of CORS, you can use https://api.ipify.org/.
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );
xmlHttp.send( null );
return xmlHttp.responseText;
}
publicIp = httpGet("https://api.ipify.org/");
alert("Public IP: " + publicIp);
I agree that using synchronous HTTP call is not good idea. You can use async ajax call then.