2010-11-26 12 views
3

Hey, also arbeite ich mit Bereichen, ich versuche, die Auswahl zu begrenzen, die ein Benutzer auf der Seite vornehmen kann. Was ich meine ist, dass der Benutzer auswählen kann, was er will, aber die Auswahl kann die Grenzen nicht überschreiten, die ich einstellen werde.Seltsames Firefox/JavaScript-Verhalten mit Bereichen

Zuerst definiere ich die "Grenzen" mit einem definierten Bereich. Dann vergleiche ich die aktuelle Benutzerauswahl mit dem definierten Bereich, wenn der aktuelle Auswahlanfang unterhalb der Grenzen liegt ODER das aktuelle Auswahlende oberhalb der Grenzen liegt, die ich entsprechend anpasse, so dass die Benutzerauswahl die definierten Grenzen Bereich/Auswahl nie überschreitet.

Die untenstehende Funktion funktioniert nur, wenn ich Ausgang eine Warnung vor dem Prozess beginnt, wenn ich die Warnung zu entfernen, dann firefox seltsam verhält (wie ein anderer Teil der Seite Auswahl, etc.)

Die Frage ist: Warum Der folgende Code funktioniert mit einer Warnung und warum funktioniert es nicht wie erwartet ohne die Warnung?

Danke!

var range = document.createRange(); // this is the boundaries range 
range.selectNodeContents(document.getElementById("container")); 

function test(){ 
      alert("let's go"); // if I remove this alert, the code doesn't work as expected, WHY?! 
      if(window.getSelection().rangeCount == 0){ 
       return; 
      } 
      var curRange = window.getSelection().getRangeAt(0); 
      if(curRange.compareBoundaryPoints(Range.START_TO_START, range) < 0){ 
       curRange.setStart(range.startContainer,range.startOffset); 
      } 

      if(curRange.compareBoundaryPoints(Range.END_TO_END, range) > 0){ 
       curRange.setEnd(range.endContainer,range.endOffset); 
      } 
     } 
+0

Was nennt die "Test" -Funktion? – Pointy

+0

Ein Knopf auf der Seite – carlosdubusm

Antwort

5

Erstens in anderen Browsern zu arbeiten (außer IE < = 8, die das Zeug zu tun, eine ganz andere Art und Weise hat), um den Bereich zu wählen Sie erneut die Sie benötigen. Zweitens, um es in Firefox arbeiten zu können, müssen Sie an einem Klon des ursprünglichen ausgewählten Bereichs arbeiten:

+1

Whoaaa, ​​danke !!, Ich kann nicht abstimmen :(aber ++ 1! – carlosdubusm

+0

Kein Problem ..... –