Objekt erwartet (Function in js-file)
Andi
- javascript
Hallo Zusammen,
bin wieder mal am verzweifeln, weil ich an den (scheinbar) eifachsten Dingen scheitere.
Ich habe eine ganz einfache Seite, in der sich ein IFrame befindet.
Dieses IFrame beinhaltet ein benanntes Formular.
Desweiteren habe ich eine js- Datei, in der ich alle Funktionen speichere.
Nun möchte ich, dass beim "Click" auf einen Button in dem Formular eine Funktion aufgerufen wird, die in der js.Datei steht.
Die entsprechende Funktion läuft fehlerfrei, wenn ich Sie direkt in den iFrame einbette.
Versuche ich es aber mit dem Verweis
<script language="JavaScript" type="text/javascript" src="../scripting/versu.js"></script>
bekomme ich immer die Fehlermeldung "Objekt erwartet" oder "Objekt unterstützt die Methode nicht"
Kann mir jemand helfen.
Hallo,
du bettest auch das script in die quelle des iframe ein?
Odium
Das wollte ich gerade vermeiden.
Die Zielanwendung ist für den Intranetbereich gedacht. Deshalb möchte ich nicht, dass der USER Zugriff auf den Quellcode hat.
Aber unabhängig von den IFrames läuft die Sache auch auf einer "normalen Seite" nicht. ;-(
Gruß
Hallo,
egal ob du dein js direkt in die seite schreibst, oder eine src angibst... da ist alles erreichbar... so sthet doch der pfad zu deinem script in der html-quelle...
wenn du das script in den iframe schreibst und es geht, aber bei verweis auf die src geht es nicht mehr, dann musst du dir folgende fragen stellen:
steht der verweis an der richtige stelle?
ist die datei auch am angegeben ort zu finden... (Pfad)?
ist der aufbar der .js datei richtig?
http://selfhtml.teamone.de/javascript/intro.htm#javascriptdateien
Odium
Vielzugern hätte ich den Fehler so gefunden. Leider scheint es nicht ganz so einfach zu sein. Momentan habe ich, um das Problem zu umgehen, die gleiche Datei per PHP mit
<?
require("../scripting/makier.js");
?>
eingebunden. Auf diesem Weg funktioniert es.
Leider habe ich aber dann die Funktionen im Quelltext, was ich ja vermeiden will.
Gruß
Nun möchte ich, dass beim "Click" auf einen Button in dem Formular eine Funktion aufgerufen wird, die in der js.Datei steht.
Die entsprechende Funktion läuft fehlerfrei, wenn ich Sie direkt in den iFrame einbette.
Versuche ich es aber mit dem Verweis
<script language="JavaScript" type="text/javascript" src="../scripting/versu.js"></script>
bekomme ich immer die Fehlermeldung "Objekt erwartet" oder "Objekt unterstützt die Methode nicht"
Dann wird das Skript offensichtlich nicht eingebunden, ectl. stimmt die Pfadangabe nicht.
Struppi.
Vielzugern hätte ich den Fehler so gefunden. Leider scheint es nicht ganz so einfach zu sein. Momentan habe ich, um das Problem zu umgehen, die gleiche Datei per PHP mit
<?
require("../scripting/makier.js");
?>
eingebunden. Auf diesem Weg funktioniert es.
Leider habe ich aber dann die Funktionen im Quelltext, was ich ja vermeiden will.
Gruß
Vielzugern hätte ich den Fehler so gefunden. Leider scheint es nicht ganz so einfach zu sein. Momentan habe ich, um das Problem zu umgehen, die gleiche Datei per PHP mit
<?
require("../scripting/makier.js");
?>
eingebunden. Auf diesem Weg funktioniert es.
Leider habe ich aber dann die Funktionen im Quelltext, was ich ja vermeiden will.
Kann es sein, dass die Datei in einem CGI Verzeichniss liegt?
Das wäre dann der Fehler.
Struppi.
Nein, das Verzeichnis ist "sauber". Es sind nur noch andere php-scriptfiles enthalten.
Andi
Nein, das Verzeichnis ist "sauber". Es sind nur noch andere php-scriptfiles enthalten.
Dann ist es ein CGI Verzeichniss!
Struppi.
Müssen diese Dateien in ein seperates Verzeichnis?
Andi
Müssen diese Dateien in ein seperates Verzeichnis?
Nein, Javascript darf nicht in einem CGI Verzeichniss stehen. aber mit fällt grad auf ich erzähle Mist, PHP wird ja nicht in CGI Verzeichnissen geparst wird(Ich arbeite nicht mit PHP). Was passiert denn wenn du im Browser die URL der Javscript Datei eingibst?
Struppi.
Der IE fragt mich, ob ich die Datei öffnen oder speichern will.
Der IE fragt mich, ob ich die Datei öffnen oder speichern will.
Dann ist alles in Ordnung und das raten beginnt von vorne.
Ohne einen Beispielhaften Codeausschnitt, läßt sich dein Problem nicht lösen.
Struppi.
o.k. Dann mal ein kleines Beispiel
<<< Die Html Seite (nur zum testen mit includierter Funktion) >>>>>
<<<<<<So funktioniert es
<html><head><title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function test() {
document.form.feld.disabled=true;
}
</script> </head>
<body bgcolor="#FFFFCC" >
<form name="form" action="">
<p> <input type="button" name="Button" value="Abschicken" > </p>
<p> <input type="text" name="feld"> </p>
<p> <input type="radio" name="kreis" value="eins" onClick="test()"> </p>
</form> </body> </html>
<<<<<<<<<< HTML mit externer Funktion >>>>>>> läuft nicht!
<html> <head> <title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript" type="text/javascript" src="../scripting/versu.js"></script>
</head> <body bgcolor="#FFFFCC" > <form name="form" action="">
<p> <input type="button" name="Button" value="Abschicken" > </p>
<p> <input type="text" name="feld"> </p>
<p> <input type="radio" name="kreis" value="eins" onClick="test()"> </p>
</form>
</body>
</html>
<<<<<< js. File >>>>>
function test() {
document.form.feld.disabled=true;
}
o.k. Dann mal ein kleines Beispiel
Na also.
<p> <input type="radio" name="kreis" value="eins" onClick="test()"> </p>
Kann es sein, das es noch ein Objekt mit dem Namen test gibt?
Der IE nimmt immer document als Kontext an, d.h. ein DIV mit dme Namen 'test' könnte deine Funktion überschrieben haben.
Teste mal:
<input type="radio" name="kreis" value="eins" onClick="alert(typeof test);">
<<<<<< js. File >>>>>
function test() {
haste hier mal ein:
alert(typeof document.form);
(oder alert(typeof document.form.feld); )
eingebaut?
document.form.feld.disabled=true;
}
Struppi.
Teste mal:
<input type="radio" name="kreis" value="eins" onClick="alert(typeof test);">
HAbe ich gestestet. Gibt: undefined
<<<<<< js. File >>>>>
function test() {
haste hier mal ein:
alert(typeof document.form);
(oder alert(typeof document.form.feld); )
gibt, wenn ich es direct in onload einbaue: object
in der js-datei: "objekt erwartet"
Andi
Hallo,
stimmen auch wirklich deine Pfade überein?
das ist wirklich ein gern gemachter fehler...
../scripting/versu.js-->eine ebene höher als die aufrufende datei-->dann scripting-->versu.js
sind die angegebenen verzeichnisse und dateien auch auf die richtige rechte gesetzt?
per ftp/telnet und chmod mal testen...
Odium
Hi Odium,
Yup, stimmt alles.
Mei Verzeichnisstruktur trennt die Html von den Scriptdateien.
Deshalb ....
Rechte stimmen auch.
Ratlosigkeit macht sich breit.
Andi
Wenn du die js-url explizit in die url-leiste deines browsers eingibst und es kommt was, kann es aber nur am pfad liegen, oder du hast bei ftp-upload mit binary geladen, muss aber text sein...
Odium
Wenn du die js-url explizit in die url-leiste deines browsers eingibst und es kommt was, kann es aber nur am pfad liegen, oder du hast bei ftp-upload mit binary geladen, muss aber text sein...
Odium
Wenn ich die Datei direkt aufrufe, gibt mir IE die Wahl, ob ich die Datei ausführen oder speichern will.
Folglich findet er sie.
Kann es sein, dass ich einen Fehler beim aufrufen der DAtei mache, oder dass ich irgendwelche Parameter übergeben muß??
Hallo,
neuer Tag, neues Glück
wie sieht denn die datei aus, die der IE dir zum speichern anbietet...
ist da ordnetlicher text, oder geschrabbel?
parameter brauchst du eigentlich nicht...
poste mal die betreffenden dateien und ein bild deiner verz. struktur
Odium
Teste mal:
<input type="radio" name="kreis" value="eins" onClick="alert(typeof test);">HAbe ich gestestet. Gibt: undefined
Das heist, das die .js Datei nicht eingebunden wird. Du kannst dich jetzt auf den Kopfstellen oder sowas, aber irgendwo in deiner Referenzierung zu der Datei ist ein Fehler oder in deiner Skript datei ist ein anderer Fehler.
Um das zu testen kannst du ans Ende deiner externen Datei ein alert('ich habe fertig') einbauen, dann weist du ob die Datei eingebunden wurde.
Oder, kann es sein (ich komm mir langsam vor wie in einer Rateshow :-( )das du in deiner externen Datei noch <script> drinstehen hast?
Struppi.