I found a solution that seems to do what I want and will be interested in comments / improvements from jquery / javascript experts.
$(document).ready(function () { $("body").disableSelection(); $("body").delegate('input[type=text],textarea', "focus", function () { $("body").enableSelection(); }); $("body").delegate("input[type=text],textarea", "blur", function () { $("body").disableSelection(); }); });
When a text field (input [type = text] or textarea) has focus, then drag and drop selects only the text in the text field. Therefore, it is “safe” to enable selection for the entire page, while the text field has focus (between focus and blur events).
There is a noticeable delay when switching between text fields on IE8 / 9. It is not noticeable in Google Chrome, which, as I understand it, has a faster JavaScript mechanism. Therefore, I can live with a performance hit, especially since IE10 will have a faster JavaScript engine.
UPDATE
When using the ASP.NET UpdatePanel this must be changed to disable the selection after each partial postback:
Sys.Application.add_load(function () { $("body").disableSelection(); });
source share