Jasons Code kann nicht für Elemente innerhalb eines iframe verwendet werden (da sich der Geltungsbereich von Fenster und Dokument unterscheidet). Ich habe dieses Problem behoben und ihn so geändert, dass er wie jedes andere jQuery-Plugin verwendet werden kann (verkettbar):
Beispiel 1: Auswahl des gesamten Textes innerhalb der < code > Tags mit einem Klick und Hinzufügen der Klasse "selected":
$(function() {
$("code").click(function() {
$(this).selText().addClass("selected");
});
});
Beispiel 2: Beim Klicken auf eine Schaltfläche wird ein Element innerhalb eines Iframe ausgewählt:
$(function() {
$("button").click(function() {
$("iframe").contents().find("#selectme").selText();
});
});
Hinweis: Denken Sie daran, dass sich die iframe-Quelle in derselben Domäne befinden sollte, um Sicherheitsfehler zu vermeiden.
jQuery-Plugin:
jQuery.fn.selText = function() {
var obj = this[0];
if ($.browser.msie) {
var range = obj.offsetParent.createTextRange();
range.moveToElementText(obj);
range.select();
} else if ($.browser.mozilla || $.browser.opera) {
var selection = obj.ownerDocument.defaultView.getSelection();
var range = obj.ownerDocument.createRange();
range.selectNodeContents(obj);
selection.removeAllRanges();
selection.addRange(range);
} else if ($.browser.safari) {
var selection = obj.ownerDocument.defaultView.getSelection();
selection.setBaseAndExtent(obj, 0, obj, 1);
}
return this;
}
Ich habe es in IE8, Firefox, Opera, Safari und Chrome (aktuelle Versionen) getestet. Ich bin nicht sicher, ob es in älteren IE-Versionen funktioniert (ehrlich gesagt ist mir das egal).