[JS] Protype.Browser.IE has no Properties ** erledigt **

strolch00

redraft.de
ID: 155297
L
21 April 2006
1.684
72
Hi @all,

Es ist zwar ein Script Fehler aber ich stelle es trotzdem mal hier rein, weil es mich allgemein Interessiert und ich das soweiso mal wissen will wie sowas in JS geht.

Ich binde folgende Dateien in meinem Header ein:
HTML:
    <script src="/javascript/prototype.js" type="text/javascript"></script>
    <script src="/javascript/scriptaculous.js?load=effects" type="text/javascript"></script>
    <!--<script src="/javascript/effects.js" type="text/javascript"></script>-->
    <script src="/javascript/game_lib.js" type="text/javascript"></script>
    <script src="/javascript/prototip.js" type="text/javascript"></script>

So steht es in der Anleitung auf der Seite wo das Script anbietet.

Jetzt sagt aber Firebug immer wieder:
Prototype.Browser has no properties
[Break on this error] };})(Prototype.Browser.IE),

Ich habe mal nachgeschaut woher das stammt, und zwar kommt das aus der Prototype.js, sowie ich das dort verstehe wird das Dort zum Browser switch verwendet um die Browserspezifischen Probleme zu beheben.

Nun Frage ich mich was ich falsch gemacht habe? Lt. Anleitung habe ich es denke ich richtig gemacht. Aber irgendwie kann ich nicht auf die Variablen in der Prototype zugreifen. Muss das Browser Array denn auf nochmal global gesetzt werden?

Danke schonmal @all
 
Zuletzt bearbeitet:
das kann passieren, wenn prototype-js eventuell noch nicht fertig geladen wurde, da kommen die größten fehler, setz event-handler, dass alle funktionen erst ihre Arbeit tun, wenn die seite komplett geladen wurde
 
Hmm sowas in der Art dachte ich mir schon, aber ich habe null Idee wie ich einen Toltip mit Eventhandlern versehen könnte. Da fällt mir spontan nix zu ein.
 
Das hängt stark davon ab, wie Du die Tooltips realisierst. Ohne mehr Quellcode wird man Dir da nicht weiterhelfen können.

Aber generell bietet Prototype seit 1.6 den ziemlich nützlichen Event dom:loaded an, der ausgelöst wird, wenn der DOM-Baum komplett geladen ist (was meistens vorm Anzeigen ist!).
 
Naja was heist mehr Quellcode? Auf der Seite steht eigentlich das was man machen soll, das ist auch ein Framework und man braucht nix weiter zu tun als folgendes in den Quelltext zu schreiben:
PHP:
new Tip(element, 'content');

Ich weiß nicht ob ich den Quelltext veröffentlichen darf, ich hoffe mal das geht in ordnung hier ist nur mal die Tip Funktion der js Datei:
Link wurde wieder entfernt!

Die Fehlermeldungen sind folgende:

Sofort nach dem laden der Seite
Prototype.Browser has no properties
[Break on this error] };})(Prototype.Browser.IE),
Fehler tritt in Zeile 95 auf!

Beim onMouseOver des Links wo ich den folgenden Quelltext nutze
Quelltext:
HTML:
              <map name="Dorfumgebung">
                <area shape="circle" coords="234,20,10"
                      href="/vicinity/build/1.htm" alt="Dorfumgebungsfeld Nr 1"
                      onMouseOver="new Tip('short_inf', 'Blabliblubb', {title: 'this tooltip has a title'});" onMouseOut="Effect.SlideUp('short_info');" />
                <area shape="circle" coords="445,242,10"
                      href="/vicinity/build/2.htm" alt="Dorfumgebungsfeld Nr 2"
                      onMouseOver="new Tip('short_inf', 'Blabliblubb', {title: 'this tooltip has a title'});" onMouseOut="Effect.SlideUp('short_info');" />
              </map>
              <img src="/images/others/karte.gif" width="550" height="723" alt="Dorfumgebung" usemap="#Dorfumgebung" />
Fehler:
Tip is not a constructor
onmouseover(mouseover clientX=0, clientY=0)

*edit
Die aktuellen Dateien habe ich, das habe ich geprüft.

*edit 2
Ich bau mal eben etwas um, ich glaube ich habe das ganze Framework falsch genutzt! Ich poste später wenn es was neues gibt.
 
Zuletzt bearbeitet:
Also hier mal der aktuelle stand:
Ich hatte es wirklich falsch genutzt jetzt habe ich alles umgebaut und die links entsprechend angepasst. Im Herader habe ich nun folgendes stehen:
HTML:
              <script type="text/javascript">
                $(document).observe('dom:loaded', function() {
                    new Tip('vicinity_1', 'Flensburg', { title: 'more effects', className: 'protoClassic', effect: 'blind', hook: {target: 'topRight', tip: 'bottomLeft'}});
                    new Tip('vicinity_2', 'Berlin', { title: 'more effects', className: 'protoClassic', effect: 'blind', hook: {target: 'topRight', tip: 'bottomLeft'}});
                });
              </script>

jedoch sagt die Konsole das das $(document).... keine Funktion sei, lt. google muss das so aber funktionieren.

Und der Fehler mit dem no properties von oben besteht weiterhin. Bin ich wirklich zu blöd für so ein Framework? :(
 
Zur Not tut es auch die "alte" Variante über
Event.observe(window,"load", function() { //dein Inhalt });
 
es müsste so lauten:
HTML:
Event.observe(document, 'dom:loaded', function(){
  new Tip('vicinity_1', 'Flensburg', { title: 'more effects', className: 'protoClassic', effect: 'blind', hook: {target: 'topRight', tip: 'bottomLeft'}});
  new Tip('vicinity_2', 'Berlin', { title: 'more effects', className: 'protoClassic', effect: 'blind', hook: {target: 'topRight', tip: 'bottomLeft'}});											   
});
 
Update mal dein Prototype.js und dein scriptaculous

Laut dem Quellcode von prototip.js benötigst du folgendes:
Code:
 REQUIRED_Prototype: '1.6.0',
  REQUIRED_Scriptaculous: '1.8.0',

Du verwendest Scriptaculous = { Version: '1.6.4' };
Du verwendest prototype 1.5.0 pre1 welches das Objekt Prototype.Browser nicht definiert. Somit kommt auch immer ein Fehler.
 
@Moloc
Wie kommst Du genau darauf??? Ich habe eigentlich die neusten Versionen gezogen.

Dank Ice seinem Tip geht es nun wunderbar. Anscheinend hatte ich wirklich den Syntax falsch verstanden. Wobei mein Code mit dem "document.oberserver..." und "$(document).observer..." war in einigen Foren zu finden und anscheinend hat es bei denen funktioniert. Aber ich habe auch gerade nochmal Sicherheitshalber das gesamte 'javascript' Verzeichnis gelöscht und neu hochgeladen, vielleicht lag es auch daran.

Aber ich danke euch allen, nun bin ich wieder ein ganzes Stück schlauer.
 
Ok danke auch dir Moloc, dann hat mein FTP Client wohl gesponnen. Die hatte ich wirklich vorher drauf bis ich gelesen hatte was benötigt wird.

Also Danke an alle bis auf so Kleinigkeiten der besch... Browser ist es halbwegs passabel.