opera fehler #2

flooo

Erfahrenes Mitglied
sieht jemand einen Fehler, denn nur opera gibt einen fehler aus sobald ich diese funktion ins script einbinde (nicht aufrufe)
voilà
Code:
function add(formn,arean,art)
{
  	var markiert = "";
	  var alles = document.getElementById(arean).value;
  	if(alles != "")
  	{
      	if (window.getSelection)
    		{
	 	      	markiert = window.getSelection();
    		}
		    else if (document.getSelection)
    		{
		      	markiert = document.getSelection();
    		}
       	else if (document.selection)
    		{ 
	 	      	markiert = document.selection.createRange().text;
    		}
    		if (markiert !== "")
		    {
			      var teile = alles.split(markiert);
       			if (teile.length != 1)
 	      		{
 		        		markiert = "["+art+"]"+markiert+"[/"+art+"]";
    				    if (window.getSelection)
    		    		{
	 	    		      	window.getSelection() = markiert;
    		    		}
		    		    else if (document.getSelection)
    				    {
          					document.getSelection() = markiert;
			        	}
    			      else if (document.selection)
        				{
	 	          			document.selection.createRange().text = markiert;
    		    		}
		            document.getElementById(arean).blur();
      			} else {
	        			alert ("Markierter Text nicht im Textfeld");
  			    }
    		} else {
	 	        alert ("Es ist nichts markiert");
    		} 
    } else {
		    alert ("Das Textfeld ist leer");
  	}
}
flooo
 
Folgende Zeile löst den Fehler aus:
Code:
document.getSelection() = markiert;

....du kannst einer Methode/Funktion keinen Wert zuweisen.

Dies gilt ebenso für:
Code:
window.getSelection() = markiert;
und
Code:
document.selection.createRange().text

Opera scheint im Gegensatz zu anderen Browsern beim Laden nicht nur auf Syntaxfehler zu prüfen....und meckert deswegen sofort herum....andere Browser bemängeln das spätestens, wenn du die Funktion aufrufst.

Wenn du einen bestimmten Text auswählen willst, geht das per select()....und da auch nur beim IE...und die Herangehensweise ist da auch anders, als in deinem Code.
 
also die Funktion läuft fehlerfrei im IE
wert mal schauen, erstmal danke
flooo

EDIT: habs grad in Opera getestet und da läuft auch alles OHNE fehler, nur beim erstmaligen laden gibts den Fehler
Es muss an der Funktion liegen, denn wenn ich die rausnehme kommt kein Fehler mehr
 
Zuletzt bearbeitet:
also es liegt an den oben benannten zeilen, aber opera und IE und Mozilla führen es richtig aus
aber noch etwas bei meinem opera funktioniert das onLoad-Event nicht, denn wenn ich diesen code habe
Code:
<img src="bilddasesnichtgibt.jpg" onLoad="los()" onError="" alt="bild gibt es nicht">
dann startet er trotzdem die funktion los()
jemand ne idee
flooo
 
Das geht ganz sicher nicht. Du kannst einer Methode keinen Wert zuweisen:

Dass das beim IE anders geht, war eine Fehlmeldung meinerseits:-)

Aber der IE kommt auch in den letzten Abzweig:
Code:
else if (document.selection)
    {
    document.selection.createRange().text = markiert;
    }
...er weist nicht der Methode selbst, sondern ihrer Eigenschaft 'text' einen neuen Wert zu.

Alle anderen Browser quittieren dein Skript (bei mir) mit der Fehlermeldung:Ungültige Zuweisung....spätestens beim Aufruf der Funktion....
....denn sie kommen in die ersten beiden Abzweige, wo du der Methode getSelection() einen Wert zuweisen willst.

Zu dem onLoad...keine Ahnung, waRum er das macht.
Probier mal:
Code:
<img src="bilddasesnichtgibt.jpg" onLoad="los()" onError="this.onload=''" alt="bild gibt es nicht">
...vielleicht lässt ers dann bleiben:rolleyes:
 
also opera kennt die onLoad eigenschaft für den img-tag nicht, sehr sehr sch.....ade, alles hängt an opera, dat darf nicht war sein
na gut danke, war nur fürs protokoll
cu, flooo
 
hab jetzt probiert anders zu testen, ob ein bild vorhanden ist und geladen werden kann oder nicht, und zwar so:
Code:
    load_img = new Image();
    load_img.src = 'pm/pm1.jpg';
    function replace_img(id)
    {
        if (load_img.complete)
        {
            clearInterval(pms);
            los();
        }else{
            load_img.src = 'pm/pm'+id+'.jpg';
        }
    }
    var pms = window.setInterval("replace_img(1)",5000)
im IE super, nur Opera und Mozilla führen die Funktion los() trotzdem aus, obwohl es das bild gar nicht gibt
und wenn man mal hier mit Opera schaut:
http://de.selfhtml.org/javascript/objekte/anzeige/images_complete.htm
Opera zeigt immer was anderes wie es lustig ist, obwohl auf der operaseite steht, das opera complete unterstützt
opera ist das wirklich toll :mad:
flooo
 
Das kann ich nicht nachvollziehen....bei mir macht Opera alles so, wie man es erwarten sollte.

onLoad feuert, sobald das Bild geladen wurde....kann das Bild nicht geladen werden, feuert er nicht.
Die Eigenschaft "complete" ist true, wenn das Bild geladen wurde...andernfalls false

Beim Mozilla funktioniert onload ebenfalls richtig.....complete ist aber immer "true"....auch wenn das Bild nicht geladen werden kann.(Ich glaube, dies wurde in SelfHTML Schon bei Netscape6 bemängelt...offensichtlich wurde das bei den Geckos bisher noch nicht behoben)

Im IE funktioniert auch (fast) alles richtig....mit einer Ausnahme.
Ist das Bild ein animiertes Gif, dann feuert onLoad bei jedem Einzelbild der Animation:-)...Sachen gibts:suspekt:.

BTW: SelfHTML ist von 2001....du solltest nicht alles, was dort steht, auf die Goldwaage legen.
Zum einen waren damals z.B. noch Opera5 und Netscape6 der letzte Schrei....zum Anderen ist SelfHTML auch nicht ganz fehlerfrei... dort haben sich hier und da Fehler eingeschlichen, und ein ernsthaftes Debugging wurde dort nach meiner Ansicht nie betrieben....
 
Das kann ich nicht nachvollziehen....bei mir macht Opera alles so, wie man es erwarten sollte.
bei meinem opera nicht (er zeigt an, dass er alle drei grafiken geladen hat siehe link:
http://www.flozirkus.com/supi/bild.htm
) und mein eigenes skript gibt immer true zurück, obwohl es kein Bild mit dieser Quelle gibt
Code:
    <script type="text/javascript">
    <!--
        load_img = new Image();
        load_img.src = 'pm/pm1.jpg';
        function replace_img()
        {
            alert(load_img.complete);
            if (load_img.complete)
            {
                clearInterval(pms);
                los();
            }else{
                load_img.src = 'pm/pm1.jpg';
            }
        }
        var pms = window.setInterval("replace_img()",5000);
    //-->   
    </SCRIPT>
hab auch schon den cache geleert, über Datei-Einstellungen (in Opera), aber hilft nix

das es bei mozilla nicht funktioniert ist mir auch aufgefallen
wenn noch ideen da sind wie man irgendwie (natürlich nur mit tricks) den serverstatus rausbekommt (mir is schon klar, das javascript clientseitig läuft :-)), dann her damit
flooo
flooo
 
Zuletzt bearbeitet:
Mmmh, das ist ja höchst merkwürdig...wenn ich das mit dem OPA lokal probiere, ist alles korrekt....aber jetzt hab ich das mal online probiert...selbes Beispiel/anderes Ergebnis.

Ich schätze mal, dass liegt daran, dass da online nicht garnix geladen wird, sondern es wird etwas geladen. Speichere dir mal mit dem Opa eines der Bilder, welche nicht vorhanden sind, ab....und schau es dir mit nem Editor an:suspekt:

Das merke ich mir für den nächsten IE-Hass-Thread:-)

Aber mal sehen...das wird schon irgendwie gehen(wenn auch nicht mit complete)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück