Javascript Aufruf in einer mit Document.write erzeugter Seite
Claude
- javascript
0 Vinzenz Mai0 Claude0 Claude
Hallo,
Ich bin erst anfänger mit Javascript.
Habe ein kleines Problem.
In meinem Verzeichnis/Homepage habe ich einige hundert HTML Seiten, die jede eine kleine Javascript-Suchfunktion haben (selber zusammengebastelt).
Um die Ergebnisse anzuzeigen, erzeuge ich mit document.write eine neue Seite (bzw überschreibe die vorhandene), die nur die Teile enthält, die der Suche entsprechen. Bis da kein Problem (ausser das es nur mit IE klappt, aber ich kenne die Lösung zu diesem Problem).
Jetzt kommt's:
In der Ergebnis-Seite brauche ich Verweise auf externe .js Dateien.
Beispiel:
.....
document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">');
document.write('<HTML><HEAD>');
document.write('<TITLE>Claude's PC-Tipps DE, Suchergebnis</TITLE>');
document.write('<link rel=stylesheet type="text/css" href="xformate.css">');
document.write('<script type="text/javascript" src="zbroklink.js"></script>');
document.write('<script type="text/javascript" src="zcpct.js"></script>');
document.write('<script type="text/javascript" src="dhtml.js"></script>');
document.write('</HEAD>');
document.write('<BODY>');
document.write("<a href="javascript:history.back()">zurück zur Liste</a><br><p><s>" + meldung);
.....
Dann mit einer Schleife werden die Ergebnisse angezeigt.
Beispiel:
.....
if(ergzw == suchwortanz) { //wenn ergzw = anzahl der Suchwoerter (bei UND) ... alle wörter gefunden
document.write(inhalthtml[i]);
.....
Das Problem ist nun, das wenn ich dies auf meinem lokalen Rechner ausführe alles geht. Sobald ich es auf dem Webspace habe, wird eine leere Seite angezeit. Erst wenn ich die 3 Zeilen
.....
document.write('<script type="text/javascript" src="zbroklink.js"></script>');
document.write('<script type="text/javascript" src="zcpct.js"></script>');
document.write('<script type="text/javascript" src="dhtml.js"></script>');
.....
entferne, dann geht es wieder.
Wenn ich den QuellCode der leere Seite anschaue, hört es direkt nach diesen 3 Zeilen auf. Der Rest wird nicht mehr erzeugt.
Zu wissen ist auch, das die gleichen 3 Zeilen auch in der ursprüngliche HTML Seite verweist sind.
Wer sich das anschauen möchte: http://www.cpctipps.de
Die Homepage kommt ganz ohne CGI und Datenbank aus.
Auf der Homepage habe ich jetzt die 3 Zeilen entfernt, damit das Suchergebnis angezeigt wird.
Nur die Links 'Tote Links melden' und 'Tipp per eMail weiterleiten' funktionieren nach der Suche nicht.
Hat jemand eine Idee?? ...bestimmt....
Vielen Dank
Gruss
Claude
mfg
Claude
Hallo
Das Problem ist nun, das wenn ich dies auf meinem lokalen Rechner ausführe alles geht. Sobald ich es auf dem Webspace habe, wird eine leere Seite angezeit. Erst wenn ich die 3 Zeilen
.....
document.write('<script type="text/javascript" src="zbroklink.js"></script>');
document.write('<script type="text/javascript" src="zcpct.js"></script>');
document.write('<script type="text/javascript" src="dhtml.js"></script>');
MudGuard hat das in diesem Archivposting erläutert.
Freundliche Grüße
Vinzenz
Hallo
MudGuard hat das in diesem Archivposting erläutert.
Vielen Dank für die Antwort, die ich jedoch nicht ganz verstehe: Wenn die ganze Zeile zwischen Hochkommas liegt, muss ich doch nicht einzelne Zeichen maskieren? Oder doch?
Und warum geht es bei mit lokal?
Danke für Erläuterung.
Gruss
Claude
Hallo,
Habe es probiert. Der erzeugte QuellCode bricht immer noch ab:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<TITLE>Claude's PC-Tipps DE, Suchergebnis</TITLE>
<link rel=stylesheet type="text/css" href="xformate.css">
<script type="text/javascript" src="zbroklink.js"></script>
<script type="text/javascript" src="zcpct.js"></script>
So sieht jetzt der Code aus:
document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">');
document.write('<HTML><HEAD>');
document.write('<TITLE>Claude's PC-Tipps DE, Suchergebnis</TITLE>');
document.write('<link rel=stylesheet type="text/css" href="xformate.css">');
document.write('<script type="text/javascript" src="zbroklink.js"></script>');
document.write('<script type="text/javascript" src="zcpct.js"></script>');
document.write('</HEAD>');
document.write('<BODY>');
....
Hi,
So sieht jetzt der Code aus:
document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">');
document.write('<HTML><HEAD>');
document.write('<TITLE>Claude's PC-Tipps DE, Suchergebnis</TITLE>');
document.write('<link rel=stylesheet type="text/css" href="xformate.css">');
document.write('<script type="text/javascript" src="zbroklink.js"></script>');
document.write('<script type="text/javascript" src="zcpct.js"></script>');
document.write('</HEAD>');
document.write('<BODY>');
Glueckwunsch - von vier Stellen, an denen die Zeichenfolge </ auftritt, hast du es bei exakt der Haelfte geschafft, die Maskierung anzubringen.
Streng dich an, dann schaffst du's beim Rest vielleicht auch noch ...
MfG ChrisB
Hi Chris,
Danke für den Hinweis. Der Rest funktionnierte aber ohne Maskierung. Deshalb habe ich die notwendigkeit nicht gesehen.
Werde ich gelich testen......
Danke
Gruss
Claude
Hallo Chris,
Trotz Anstregung klappt es nicht.
Wenn im ganzen Dokument maskiert werden muss, kann ich das nicht auf einfacher weise, da weiter unten in einer Schleife Elemente mit OuterHTML zurückgegeben werden.
Wie sieht es mit so einer Lösung aus, die ich am Ende ausführen könnte, wenn das Dokument erzeugt ist:
var newScriptZeile = document.createElement("script");
newScriptZeile.type="text/javascript";
newScriptZeile.src="zbroklink.js";
document.getElementByTagName("Head")[0].appendChild(newScriptZeile);
Leider bekomme ich für die letzte Zeile die Fehlermeldung, dass das Objekt dies nicht unterstützt. Geht das wirklich nicht? Oder habe ich ein Fehler drin?
Vielen Dank
Gruss
Claude
Hi,
document.getElementByTagName("Head")[0].appendChild(newScriptZeile);
Leider bekomme ich für die letzte Zeile die Fehlermeldung, dass das Objekt dies nicht unterstützt.
Vermutlich, weil du gar kein Objekt hast - das hast du doch sicher per Kontrollausgabe (von document.getElementByTagName("Head")[0]) ueberprueft?
Head vs. head koennte den Unterschied machen.
MfG ChrisB
Hi Chris,
Danke. Du hast recht! Ich habe zur der Zeit noch gar kein Objekt!
Die Anweisung
alert(document.getElementByTagName("HEAD")[0].innertext);
bringt die gleiche Fehlermeldung (diesmal habe ich auf gross/klein-Schreibung geachtet.
Vorerst habe ich keine weitere Idee. ;-(
mfg
claude
(diesmal habe ich auf gross/klein-Schreibung geachtet.
Das hast du nicht!
Struppi.
Hi Struppi,
Das hast du nicht!
Struppi.
An welcher Stelle nicht? In der erzeugten Seite steht HEAD.
Daher verstehe ich nicht genau was du meinst.
Danke
mfg
Claude
Das hast du nicht!
Struppi.
An welcher Stelle nicht? In der erzeugten Seite steht HEAD.
Sowohl das Attribut als auch die Funktion sind falsch geschrieben. Schau einfach noch mal in selfhtml nach.
Struppi.
Sowohl das Attribut als auch die Funktion sind falsch geschrieben. Schau einfach noch mal in selfhtml nach.
Struppi.
Danke. Werde ich heute Abend noch mal prüfen und korrigieren
mfg
Claude
Habe es probiert. Der erzeugte QuellCode bricht immer noch ab:
Ich hab deinen code auch probiert, er bricht nicht ab
Struppi.
Hallo Struppi.
Vielen Dank. Lokal auf meinem Rechner geht es auch. Leider nicht im Internet.
mfg
Claude
Vielen Dank. Lokal auf meinem Rechner geht es auch. Leider nicht im Internet.
Bei mir geht er auch im Internet.
Struppi.
Bei mir geht er auch im Internet.
Struppi.
Hallo Struppi. Mit welchen Browser? Ich benutze IE7
mfg
Claude
Bei mir geht er auch im Internet.
Struppi.
Hallo Struppi. Mit welchen Browser? Ich benutze IE7
Das spielt keine Rolle, der code ist ok, für alle Browser. Die Frage ist eher was du unter "geht nicht" verstehst.
Struppi.
Hallo Struppi,
Die Frage ist eher was du unter "geht nicht" verstehst. Struppi.
Also, wir sprechen hier eigentlich von 2 Sachen.
wenn ich mit document.write versuche die js-Datei im Head einzubinden, hört der erzeugte QuellText nach diesen <script></script> Tags auf. Der Rest wie </head><body> usw.... wird gar nicht mehr erzeuzgt. ABER lokal auf meinem Rechner klappt's. Beispiel siehe ganz oben
als Ersatz Lösung wollte ich die <script></script> Zeilen per DOM im HEAD einfügen. Hier bekomme ich lokal sowie im Internet die Fehlermeldung, dass das Objekt diese Eingeschaft oder Methode nicht unterstützt.
mfg
Claude
- wenn ich mit document.write versuche die js-Datei im Head einzubinden, hört der erzeugte QuellText nach diesen <script></script> Tags auf. Der Rest wie </head><body> usw.... wird gar nicht mehr erzeuzgt. ABER lokal auf meinem Rechner klappt's. Beispiel siehe ganz oben
Davon rede ich, das klappt prima ob Lokal Online oder in welchem Browser. D.h. du machst etwas anderes falsch. Bekommst du eigentlich einen Fehlermeldung
- als Ersatz Lösung wollte ich die <script></script> Zeilen per DOM im HEAD einfügen. Hier bekomme ich lokal sowie im Internet die Fehlermeldung, dass das Objekt diese Eingeschaft oder Methode nicht unterstützt.
Mal abgesehne davon dass die Methode nicht empfehlenswert ist, weil nicht alle Browser das JS auch umsetzten, ist die Fehlermeldung schon klar, weil die Funktion nicht so heißt, sie heißt getElementsByTagName
Struppi.
Hi Struppi, vielen Dank
OK, getElements ...s... (habe hier das s vergessen, werden ich heute Abend testen.
Melde mich wieder heute Abend.
Gruss
Claude
Hallo Struppi,
Da Lösung 1 bei mir NUR lokal klappt (warum auch immer), habe ich weiter mit Lösung 2 probiert.
Dabei habe ich nun folgende Zeilen am Ende der Suchfunktion hinzugefügt:
var newScriptZeile = document.createElement("script");
newScriptZeile.type="text/javascript";
newScriptZeile.src="dhtml.js";
document.getElementsByTagName("HEAD")[0].appendChild(newScriptZeile);
newScriptZeile.src="zcpct.js";
document.getElementsByTagName("HEAD")[0].appendChild(newScriptZeile);
newScriptZeile.src="zbroklink.js";
document.getElementsByTagName("HEAD")[0].appendChild(newScriptZeile);
Hier habe ich 2 neue Probleme (wahrscheinlich habe ich wieder ein Gedanken- oder Tipp-Fehler):
a) es wird nur die letzte JS-Datei berücksichtigt (...da denke ich, dass ein Gedankenfehler in den oberen Zeilen sein muss)
b) Ganz kommisch: Es geht nur 1 Mal, dann kommt die Fehlermeldung "Objekt erwarten", so wie wenn der Verweis beim 2. Klicken wieder verschwunden wäre.
Vielen Dank für eure Hilfe.
Gruss
Claude
[latex]Mae govannen![/latex]
var newScriptZeile = document.createElement("script");
newScriptZeile.type="text/javascript";
newScriptZeile.src="dhtml.js";
document.getElementsByTagName("HEAD")[0].appendChild(newScriptZeile);
newScriptZeile.src="zcpct.js";
document.getElementsByTagName("HEAD")[0].appendChild(newScriptZeile);
newScriptZeile.src="zbroklink.js";
document.getElementsByTagName("HEAD")[0].appendChild(newScriptZeile);Hier habe ich 2 neue Probleme (wahrscheinlich habe ich wieder ein Gedanken- oder Tipp-Fehler):
a) es wird nur die letzte JS-Datei berücksichtigt (...da denke ich, dass ein Gedankenfehler in den oberen Zeilen sein muss)
Du hast genau eine Hundehütte und streichst sie erst gelb, dann rot, dann weiß. Selbstverständlich siehst du nichts mehr von gelb und rot, weil du es übermalt hast. Was passiert wohl, wenn du genau einem script-element mehrfach eine neue src zuweist? Genau.
Also für jede js-datei ein eigenes Element erzeugen.
Cü,
Kai
Hallo Kai,
Also für jede js-datei ein eigenes Element erzeugen.
Kai
Ja, OK, habe jetzt Zugriff auf Funktionen aus allen 3 Dateien. Vielen Dank.
Aber: Der Zugriff funktioniert nur EIN Mal. Beim 2. Mal kommt wieder der Fehler "Objekt erwartet". Was habe ich da falsch gemacht?
mfg
Claude
Hallo Kai,
Noch ein wichtiger Hinweis: Beim ausführen einer Funktion wird wieder eine neue Seite erzeugt. Wenn ich dann mit History Back zurückkehre, und die Funktion erneut ausführe, dann kommt die Fehlermeldung.
Gruss
claude
Hallo,
Der Grund dass es nur einmal ging, war definitiv, dass die Seite nochmal überschrieben wurde, und mit history.back zurückgekehrt wurde. Danach waren die Verweise wieder weg.
Werde daher die neue Seiten in einem neuen PopUp-Fenster öffnen.
Dann bleibt die Seite bestehen, und die Funktionen können weiter verwendet werden.
Also, vielen Dank an alle für die Tipps.
mfg
Claude
Hallo,
Wäre es vielleicht eine Lösung, die 3 Zeilen mit DOM nachträglich im HEAD einzubauen, nachdem die Seite fertig erzeugt ist?
Vielen Dank für eure Hilfe
Gruss
Claude
Hallo,
Ist sowas denkbar?
var newScriptZeile = document.createElement("script");
newScriptZeile.type="text/javascript";
newScriptZeile.src="zbroklink.js";
document.getElementByTagName("Head").appendChild(newScriptZeile);
Danke
Gruss
Claude