Пример кода, протестированный в Firefox 3.6, Chome 6 и Opera 10.6, который в точности соответствует тому, что вы описали в своем вопросе.
javascript:(
function(){
var range = window.getSelection().getRangeAt(0);
var a = document.createElement('a');
a.setAttribute('href',document.location);
a.appendChild(document.createTextNode(window.getSelection().toString()));
range.deleteContents();
range.insertNode(a);
}
)()
Если вам нужно, чтобы он был совместим с IE, прочитайте этот пост:
http://www.daniweb.com/forums/thread85642.html