Nick: Browsererkennung per Javascript

Beitrag lesen

Es besteht kein Grund, Opera auszusperren  Ich weiß nicht, wieso du Opera die Methode zukommen lässt, die er nicht kann. Ich habe doch in meinem Artikel beschrieben, dass man Opera besser mit Microsoft-TextRanges bedient, indem man erst auf document.selection.createRange prüft. Diese Methode hat meinen Tests zufolge kein Problem damit, mehrere Zeilen zu markieren.

Das Script funktioniert, wie ich es im Artikel vorstelle, browserübergreifend ohne Browserweichen - und ohne manuelle Anleitungen für manche Benutzer.

-------------------------------------------------------------------
-------------------------------------------------------------------

Hallo Mathias,

... hier mal Deine (praktisch unveränderte) Funktion zum Markieren von Text.
Soweit dürfte ich noch keinen Fehler gemacht haben, oder ?! Wenn ich das Script im Opera teste, geschieht genau das, was ich beschrieben habe:

Opera* markiert die Kindelemente der Ebene "ebene" - grundsätzlich - nur unter der Voraussetzung, das alle Elemente in einer Zeile ohne Umbrüche notiert sind (siehe kommentierter Bereich)- und das geht in meinem Originalscript - aus den bereits erwähnten Gründen - nicht.

Ich bin also beim Recherchieren, Studieren und Ausprobieren Deiner und anderer Artikel weit weniger "schludrig", als Du glaubst ...  ;-)

Wenn ich jetzt hier einen entscheidenden (Denk-)Fehler irgendwo gemacht habe: Lass es mich bitte wissen ...

Mfg Nick

* Opera 9.63 in der Standardkonfiguration auf Windows XP Prof SP3

-------------------------------------------------------------------
-------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title></title>
<script type="text/javascript">
<!--
function markieren()
{
elem = document.getElementById('ebene');
if (document.selection && document.selection.createRange)
{
var textRange = document.selection.createRange();
textRange.moveToElementText(elem);
textRange.select();
}
else if (document.createRange && window.getSelection)
{
var range = document.createRange();
range.selectNode(elem);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}
}
-->
</script>
</head>
<body>
<div id="ebene">
<p>Inhalt 1</p>
<p>Inhalt 2</p>
<p>Inhalt 3</p>
</div>
<!--
<div id="ebene"><p>Inhalt 1</p><p>Inhalt 2</p><p>Inhalt 3</p></div>
-->
<a href="javascript:markieren()">Ebene markieren</a>
</body>
</html>