The best solution remains AJAX exactly as you planned. And also, as you planned, the browser history (and bookmarking) won't work correctly unless you use history.js. I'll let you read more from another post: How to "bookmark" page or content fetched using AJAX?
content-fetched-using-ajax
Edit to help AJAX implementation:
Without seeing your code, it is hard to say if it is gonna work, but something similar to this very generic script could turn any website from "regular" to ajax driven, with jQuery:
$('body').on('click','a',ajaxContentReplace);
$('body').on('submit','form',ajaxContentReplace);
function ajaxContentReplace(){
if($(this).is('form'){
// Will send form data in POST and retrieve the html in #container to put it in #container.
$('#container').load($(this).prop('action')+' #container',$(this).serializeArray);
}else{
// Will retrieve the hole page and put the content of #container in #container of the current page.
$('#container').load($(this).prop('href')+' #container');
}
}
This is just a quick solution that works on some Basic websites, it might not do all you need but is still a start.
Edit: As I pointed out in the comments of the question, popular radio stations use a pop-up to play te radio, that way users can leave their website and still listen to the radio. It also is a very easy implementation.