Kleines Problem

son gohan

Erfahrenes Mitglied
Hallo,

ich habe ein kleines Problem mit einer Javascript Fehlermeldung.

Ich habe zwei Seiten, ein mit einem Iframe und die andere auch. In der einen Seite ist ein Iframe mit der Adresse zu meiner Homepage. Die Homepage ist meine zweite Seite die ich meine.

Wenn ich meine erste Seite mit dem iframe und der Homepage Adresse öffne, dann bekomme ich die Fehlermeldung:

Zeile 29, Zeichen 1, Zugriff verweigert, Code 0, willkommen html.

Die willkommen.html in der der Fehler steckt, öffnet sich in einem weiteren Iframe meiner index.shtml Seite. In der index.shtml Seite steht der das javascript:

HTML:
<script language="JavaScript" type="text/javascript">
if(!(top.document.title == 'Herzlich Willkommen))
	window.location.href = 'index.shtml?' + location.href;
</script>

In meiner index.shtml heißt der Titel der Seite Herzlich Willkommen wie in dem Script der willkommen.html gefordert wird und weiter steht noch in der index.shtml das Javascript drin:

HTML:
<script language="javascript" type="text/javascript">
<!--
if(window.location.search != ''){
strSearch = String(location.search);
intLength = strSearch.length;
strSearch = strSearch.substring(1,intLength);
document.write('<div id="content"><iframe scrolling="yes" ALLOWTRANSPARENCY="true" marginheight="10" marginwidth="10" frameborder="0" name="waren" src="' + strSearch + '" width="100%" height="100%">Ihr Browser unterstützt leider keine iFrames</iframe></div>');
}else{
document.write('<div id="content"><iframe scrolling="yes" ALLOWTRANSPARENCY="true" marginheight="10" marginwidth="10" frameborder="0" name="waren" src="willkommen.html" width="100%" height="100%">Ihr Browser unterstützt leider keine iFrames</iframe></div>');
}
-->
</script>

Nun. ich habe absolut keine Ahnung von Javascript und hoffe auf eure Hilfe, vielen Dank im Voraus.

Viele Grüße
Feh
 
Javascript erlaubt keinen domainübergreifenden Zugriff auf Fenster/Dokumente.
Wenn das Dokument in dem <iframe> nicht zur identischen Domain gehört, wie die top-Seite, kannst du den Titel dieser Seite aus dem iFrame heraus nicht ermitteln... was in dieser Fehlermeldung resultiert.
 
Hallo lieber Sven,

meine Frage ist etwas schwer formuliert gewesen und deine Antwot habe ich auch nicht richtig verstanden.

ich möchte dir gerne das ganze nochmal etwas einfacher erklären.

Die erste Seite ist ganz normal nichts besonders. Ich habe sie auf meiner Festplatte, es ist eine HTML Seite mit Iframe. Im Iframe ist die Adresse einer von mir Homepage. Die Homepage hat auch ein Iframe und ist mit einem Nachlade Javascript bestückt.

Öffne ich meine Seite von der Festplatte, dann öffnet sich meine Homepage in dem Iframe der Seite, logisch ne?

Aber hier fängt das Problem auch schon wieder an. Ich bekomme die Meldung das ein Javascriptfehler in der willkommen.html auf der Homepage ist. Und die Homepage lädt sich nicht richtig in meinem Iframe. In meiner Iframe Seite auf der Festplatte, habe ich kein Javascript drine stehen.

Auf der Homepage habe ich den bekannten und üblichen Trick mit dem Nachladen per Javascript angewendet. Jede Seite die zur Homepage gehört hat so ein Javascript damit sie sich bei Auffinden in einer Suchmaschiene im Iframe der Homepage nachlädt.

Für die Homepage kann ich wegen dem Warenkorbsystem die Frames nicht wegnehmen und in meiner Seite auf der Festplatte kann ich auch keine andere include Technik wie PHP,SSI anwenden, wegen dem Server.

Wie kann ich jetzt also das Problem lösen. Ich weis nur das ich in meiner Seite auf der Festplatte auch schon andere Homepages geladen habe die auch solch eine Nachladescript haben und die werden ohne Fehler geladen. Also muss es doch bei meiner Homepage auch irgendwie gehen.

Kannst du bitte nochmal versuchen mir das Problem zu erklären und zu lösen?
 
Warum diese Fehlermeldung kommt, hab ich dir geschrieben.

Dass es bei anderen Leuten funktioniert, liegt daran, dass sie nicht versuchen, etwas auszulesen... du versuchst dies(du willst den title des Dokumentes im top-Fenster auslesen)... was fehlschlägt, wenn sich dieses Dokument nicht unter derselben Domain befindet.... und diese Fehlermeldung erzeugt.

Workaraound:
Versuche lediglich, den Titel auszulesen... es gibt ein eigenes Statement für solche Fälle... es nennt sich try-catch.

Damit wird in try etwas versucht.... schlägt dies fehl, wird kein Fehler erzeugt, sondern der alternative catch-Abzweig verfolgt, in dem man etwas anderes probiert.

Code:
<script type="text/javascript">
<!--
function redir()
{
    top.location.href = 'http://www.google.de?' + location.href; 
}

try {
        if(top.document.title != 'Herzlich Willkommen') redir();
    }
catch(e)
    {
        redir();
    }
//-->
</script>

Im try-Abzweig wird versucht, den Titel auszulesen. Ist dieser nicht wie gewünscht, wird umgeleitet.
Schlägt dies fehl, hält sich das top-Dokument also auf einer anderen Domain auf, kommt der catch-Abzweig zum tragen... der leitet ebenfalls um.
 
Hallo lieber Sven,

ich glaube ich verstehe ein wenig was du damit meinst. Ich habe ja auf meiner Festpaltte eine Seite mit Iframe und das Iframe ruft meine Homepage auf wenn man die Seite öffnet.

In meiner Homepage ist aber jeweils in jeder zugehörigen Seite ein Script eingebaut, welches den Titel der index.shtml sucht um die Seite dann darin zu laden. Das Script welches in jeder Seite meiner Homepage eingebaut ist, ausser in der index.shtml, sieht so aus:

HTML:
<script language="JavaScript" type="text/javascript">
if(!(top.document.title == 'Herzlich Willkommen'))
	window.location.href = 'index.shtml?' +  location.href;
</script>

Wenn ich nun meine Seite welche auf meiner Festplatte gespeichert ist, im Browser aufrufe, und dann das Iframe, welches in dieser Seite drin ist, dann meine Homepage aufruft, dann sucht das Script meiner Homepage, welches in den Seiten meiner Homepage intigriert ist, den Titel der Seite, und da die aktuelle Seite meine Seite mit Iframe auf der Festplatte, nicht den gleichen Titel wie die index.shtml meiner Homepage hat, kommt die Javascriptfehler - Meldung zustande?

Aber was ist wenn ich dann einfach den Titel auf meiner Iframe Seite den gleichen Titel wie die der index.shtml Seite meiner Homepage gebe? Dann müste doch das Script einen Titel finden. Nun meine Test haben mir gezeigt, das es auch so nicht geht.

Also, man merkt schon, das ich mich schwer tue das ganze zu verstehen. Aber ich will und muss das unbedingt hinbekommen.

Also, zweiter Versuch, ich mach jetzt nur noch das was du mir sagst und hoffe das ich es dann hinbekomme und aus meinem Fehler lehrnen werde.


Das neue Script das du mir empfohlen hast mit einem try-catch:

HTML:
<script type="text/javascript">
<!--
function redir()
{
	top.location.href = 'http://www.google.de?' + location.href; 
}

try {
		if(top.document.title != 'Herzlich Willkommen') redir();
	}
catch(e)
	{
		redir();
	}
//-->
</script>

soll ich jetzt bitte in welche Seite, bzw. Seiten einbauen. Zurzeit steht ja in meiner Homepage in jeder Seite ausser der index.shtml das Script welches ich oben am Anfang gezeigt habe drine.

In der index.shtml steht nochmal zur besseren Ansischt das Script hier drine:

HTML:
<script language="javascript" type="text/javascript">
<!--
if(window.location.search != ''){
  strSearch = String(location.search);
  intLength = strSearch.length;
  strSearch = strSearch.substring(1,intLength);
  document.write('<div id="content"><iframe scrolling="yes" ALLOWTRANSPARENCY="true" marginheight="10" marginwidth="10" frameborder="0" name="waren" src="' + strSearch + '"  width="100%" height="100%">Ihr Browser unterstützt leider keine iFrames</iframe></div>');
}else{
  document.write('<div id="content"><iframe scrolling="yes" ALLOWTRANSPARENCY="true" marginheight="10" marginwidth="10" frameborder="0" name="waren" src="willkommen.html"  width="100%" height="100%">Ihr Browser unterstützt leider keine iFrames</iframe></div>');
}
-->
</script>
<noscript>
<iframe scrolling="yes" name="waren" src="willkommen.html" width="100%" height="100%">
<h2>Übersicht zu unseren Seiten</h2>
<iframe>
</noscript>

Das <div id="content"> Tag ist das mit CSS Tag wo der Inhalt, also alle meine Seiten erscheinen. Und der Titel der index.shtml ist heißt, wie beschrieben, Herzlich Willkommen. Die willkommen.html ist meine Begrüsungsseite bzw. Startseite.


Mir sind jetzt noch einige Sachen unklar lieber Sven, in dem folgenden Script von dir:

HTML:
<script type="text/javascript">
<!--
function redir()
{
	top.location.href = 'http://www.google.de?' + location.href; 
}

try {
		if(top.document.title != 'Herzlich Willkommen') redir();
	}
catch(e)
	{
		redir();
	}
//-->
</script>

steht
HTML:
 top.location.href = 'http://www.google.de?' + location.href;
, Frage: muss ich da wo http://www.google.de? steht meine eigene Domain für die Homepage rein schreiben mit Fragezeichen am Ende wie im Beispiel?

Frage: Der Teil wo mein Titel steht
HTML:
 if(top.document.title != 'Herzlich Willkommen') redir();
scheint so fertig zu sein und muss nicht geändert werden?

Frage: In welche Seite, bzw Seiten muss ich jetzt dieses try-catsch Script einbauen, damit alles klappt?

Frage: Und welche Scripte muss ich aus den Seiten meiner Homepage entfernen damit es keine Schwierigkeiten mehr gibt.


Man, ich hoffe das wird klappen :( .
 
und da die aktuelle Seite meine Seite mit Iframe auf der Festplatte, nicht den gleichen Titel wie die index.shtml meiner Homepage hat, kommt die Javascriptfehler - Meldung zustande?
..... nö, das hat damit nix zu tun... der Fehler wird bereits dadurch erzeugt, dass du versuchst, den title auszulesen... was durch Javascript-Sicherheitsbeschränkungen unterbunden wird.

Diese Fehlermeldung ist also weniger ein Skriptfehler, sondern vielmehr ein Hinweis auf einen Sicherheitsaspekt... die Wirkung ist aber die gleiche .... das Skript kann nicht ausgeführt werden.



...der Vorschlag von mir(die Funktion und das try-catch)... damit musst du dies:
Code:
<script language="JavaScript" type="text/javascript"> 
if(!(top.document.title == 'Herzlich Willkommen')) 
window.location.href = 'index.shtml?' + location.href; 
</script>
...komplett ersetzen.

...zum "google.de"... ja, da muss die Adresse deiner index.shtml hinein.
 
Hallo Sven,

ich habe das neue try Script von die mal getestet, aber es bewirgt das sich die komplette Seite, in der ich mein Iframe habe zerschlagen wird, also weckfält und die Homepage sich dann in der kompletten Seite öffnet.

Es ist aber nicht das was oich wollte. Ich habe die Seite mit dem Iframe, in dem sich die Homepage öffnen soll ja so aufgebaut, das obenrum noch ein Kleine Navigation ist. Aber mit dem Script geht alles weck. Da könnte ich auch genauso gut einfach mit target Blank den Link in enem neuen Fenster öffnen lassen.

Mist, ich habe schon vermutet das es wieder nicht klappen wird.

Bitte sag mir das es noch eine Möglichkeit gibt.

Gruß
Fehmi
 
Hallo Sven,

Mist, schon wieder nicht geklappt, ich habe das Script jetzt so eingesetzt:

HTML:
  <script type="text/javascript">
<!--
function redir()
{
	top.location.href = 'http://www.google.de?' + location.href; 
}

try {
		if(window.document.title != 'Herzlich Willkommen') redir();
	}
catch(e)
	{
		redir();
	}
//-->
</script>
Also top durch window esetzt, aber wenn ich jetzt meine Homepage in meiner Iframe Seite lade, dann geht wieder der Rest der Seite weck und. Und die Homepage ladet sich auch ziemlich seltsam, so immer und immer wieder und hört nicht auf.

Also jetzt will ich nochmal eine Kleine zusammenfassung machen, damit wir nicht was falsch verstehen. in meiner index.shtml der Homepage ist folgendes Script drin:

HTML:
<script language="javascript" type="text/javascript">
<!--
if(window.location.search != ''){
  strSearch = String(location.search);
  intLength = strSearch.length;
  strSearch = strSearch.substring(1,intLength);
  document.write('<div id="content"><iframe scrolling="yes" ALLOWTRANSPARENCY="true" marginheight="10" marginwidth="10" frameborder="0" name="waren" src="' + strSearch + '"  width="100%" height="100%">Ihr Browser unterstützt leider keine iFrames</iframe></div>');
}else{
  document.write('<div id="content"><iframe scrolling="yes" ALLOWTRANSPARENCY="true" marginheight="10" marginwidth="10" frameborder="0" name="waren" src="willkommen.html"  width="100%" height="100%">Ihr Browser unterstützt leider keine iFrames</iframe></div>');
}
-->
</script>
<noscript>
<iframe scrolling="yes" name="waren" src="willkommen.html" width="100%" height="100%">
<h2>Übersicht zu unseren Seiten</h2>
<iframe>
</noscript>

In meine jeweiligen Seiten der Homepage ist das erste Script von oben drine.
In meiner Iframe Seite auf dem lokalen Rechner ist kein Script drine sondern nur ein Iframe mit der URL zu er Homepage.

Wenn ich die Seite mit dem Iframe öffne, dann zereist die geladene Homepage das Frame und läuft nicht.

Was mache ich jetzt? Mir ist jede Lösung recht, aber nur kann ich auf keinen Fall meine Homepage von seinen Frame befreien. Vielleicht irgendwas mit PHP? Man, ich hab selber echt keine Ahnung.
 

Neue Beiträge

Zurück