[Frames] IE6 startet Script erst nach reload

kbot

warm draußen,oder?
ID: 50740
L
20 April 2006
4.203
143
Moin ihrs,

ich hab mir mal ein sms-gateway-script geholt und wollte es auf meiner Seite einbinden.
Es funktioniert auch wunderbar im FF2 sowie im Opera.
Nur der IE6 hat damit Probleme.

Also meine Seite hat Frames und wenn ich auf den Link "SMS" klicke (welcher sich in nem anderen Frame öffnen soll) bekomme ich nur eine leere Seite, erst wenn ich diesen Frame mit der leeren (aber mit richtigem Quelltext) Seite aktualisieren lasse, dann fängt er an, das Script zu laden.

Wo liegt das Problem? Was kann ich da machen?
Ich hab schon versucht, das Script extra noch in nen Div zu packen und ich hab das Script in den Head und alle möglichen Stellen im Body gepackt, was aber alles nicht half.

Falls es mal jemand mit dem IE6 ausprobieren will, hier ist die Seite. Dort dann einfach im oberen Menü auf "SMS" klicken.

Achso, wenn ich die SMS-Seite einzeln (also ohne Frames) aufrufe, dann wirds auch direkt gestartet, darum denk ich, dass es ne Frames-Problematik ist.


MfG kbot
 
Zuletzt bearbeitet:
hmm....typisch ie....also meine ideen(habs nicht weiter ausgetestet)

eine Idee wäre:
* IE mag nicht, dass box_id nicht gesetzt ist.

kA ob das stimmt, auf jedenfall verursacht das einen Fehler. lös das mal und schau ob das was ändert(eventuell stoppt der IE alle scripts wegen diesem Fehler)
 
wenn ich die Seite ohne Frames, also direkt aufrufe, dann geht es problemlos, nur wenns innerhalb des Frames aufgerufen wird...

und wegen box_id, die müsste eigentlich gesetzt sein, läuft alles über ein Script von ner anderen Seite, hab da keinen Einfluss drauf...

hier mal der Quelltext:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="https://www.smsgott.de/free_sms_box-2861.js"></script>
</head>
<body>
<div>
<script type="text/javascript" src="https://www.smsgott.de/free_sms_box-2861.js"></script>
<script type="text/javascript">
box_id = 2861;
this_uri = document.location;
last_uri = document.referrer;
</script>
<script type="text/javascript" src="https://www.smsgott.de/free_sms_box-2861.js"></script>
<noscript>Ihr Browser unterstützt kein Javascript.<br />
<a  target="_blank" href="https://www.smsgott.de">Gratis SMS</a>
</noscript>
<!-- <img src="https://www.smsgott.de/sms_verfuegbarkeit_img.php?id=2861" /> -->
</div>
</body>
</html>
hab mal die Standard-Angaben wie Meta* rausgekürzt


hmm, ich merk grad, kann es mit "this_uri = document.location;" zusammenhängen?
denn als URI wird wohl nur www.domain.de übermittelt, denk ich, aber nicht www.domain.de/sms.html

is das das Problem? :-?


MfG kbot

Edit: Wenn ich " this_uri = 'https://www.domain.de/sms.html'; " mache, dann meldet der IE auch kein Problem mit 'box_id', aber die Seite wird trotzdem nicht geladen :/
 
Zuletzt bearbeitet:
mmh, der code mit dem box_id wird aus irgendeinem grund nicht ausgeführt. ich nehme an, dass es der Fehler ist, der den script stoppt.

der Fehler liegt denke ich mal bei "1:" in meinem Zitat

HTML:
<script type="text/javascript" src="https://www.smsgott.de/free_sms_box-2861.js"></script> 
<script type="text/javascript"> 
box_id = 2861; 
this_uri = document.location; 
last_uri = document.referrer; 
</script>
<script type="text/javascript" src="https://www.smsgott.de/free_sms_box-2861.js"></script>

und zwar: in free_sms_box-2861.js wird box_id verlangt. Jedoch wird diese Datei vor der deklaration aufgerufen! (warum rufst du sie 2x hintereinander auf?)
 
weil ich dachte, dass vielleicht das Script erst gestartet werden muss...
hab es jetzt wieder ins Original versetzt, aber das Problem besteht weiterhin, das Script wird nicht geladen (erst nach reload des Frames geht es)
 
Der script wird ausgeführt wenn du ihn ladest(außer der Code befindet sich in Funktionen). ergo wird er in diesem Fall vor dem teil mit der box_id geladen, womit die box_id in diesem Scriptteil dann fehlt. Ich nehme mal an IE stoppt den script sofort und Firefox/opera führen ihn weiter aus oder so.

hast du was geändert?in meinem Debugger ist die seite nach wie vor so wie vorhin


lösche mal zeile 1: aus meinem vorherigen Zitat(das wäre nummero 8: in deinem Zitat)
 
ja, ich hatte es schon geändert, hattest wohl noch das alte im Cache

Version von 19.12Uhr und gleichzeitig die ursprüngliche Version, mit der ich anfing:
PHP:
<html>
<head>
</head>
<body>
<div>
<script type="text/javascript">
box_id = 2861;
this_uri = document.location;
last_uri = document.referrer;
</script>
<script type="text/javascript" src="https://www.smsgott.de/free_sms_box-2861.js"></script>
<noscript>Ihr Browser unterstützt kein Javascript.<br />
<a  target="_blank" href="https://www.smsgott.de">Gratis SMS</a>
</noscript>
</div>
</body>
</html>
 
Zuletzt bearbeitet:
mmh kniffelig...die Fehler sind nun weg...IE kann ich leider nicht debuggen, kA was der hat

du musst dir wohl den Fehler systematisch suchen.
Ich nehme an du verstehst ein paar grundzüge von JavaScript. Versuche folgendes(der kreativität ist keine Grenzen gesetzt beim debuggen^^)

* schau mal, ob Javascript prinzipiell ausgeführt wird bei deinem Frame (zb: gib in die sms.html ganz am anfang ein alert("erfolg"); rein)

* schau mal, ob document.write auch so funktioniert, bau dir eine einfachere funktion dafür in sms.html die document.write verwendet

PS: während dem schreiben ist mir gerade aufgefallen dass du in diesem Fall ohnehin kein document.write verwenden solltest. Workaround:

mach dir ein div element, wie <div id="smsbox"> </div>
greife nun statt dem document.write mit document.getElementById("smsbox").innerHTML='<iframe..........';

zu, das ist sicherer (document.write könnte ungewünscht sachen auf der seite überschreiben)
 
* schau mal, ob Javascript prinzipiell ausgeführt wird bei deinem Frame (zb: gib in die sms.html ganz am anfang ein alert("erfolg"); rein)
funktioniert bei erstmaligem Laden sowie bei Reload, Seite bleibt leer
* schau mal, ob document.write auch so funktioniert, bau dir eine einfachere funktion dafür in sms.html die document.write verwendet
funktioniert bei erstmaligem Laden sowie bei Reload, nur sms-box lädt immer noch erst bei Reload
Skript:
HTML:
<script type="text/javascript">
 document.write('<br><a href="https://www.domain.com"><strong>domain.com</strong></a><br>');
 </script>
PS: während dem schreiben ist mir gerade aufgefallen dass du in diesem Fall ohnehin kein document.write verwenden solltest. Workaround:

mach dir ein div element, wie <div id="smsbox"> </div>
greife nun statt dem document.write mit document.getElementById("smsbox").innerHTML='<iframe..........';

zu, das ist sicherer (document.write könnte ungewünscht sachen auf der seite überschreiben)
leider habe ich keinen Einfluss auf das Skript, da es von jemand anderem bereitgestellt wird, also kann ich das document.write nicht ändern...


MfG kbot

ps. Debugger für IE findest du hier, aber DebugBar hat mir auch nix besonderes gezeigt...

Edit: Evtl. liegts auch an dem vom Fremd-Skript erzeugten IFrame-Inhalt ...
hier mal der Inhalt von diesem:
PHP:
<html>
<head>
<title>Free SMS Versand</title>
<link rel="stylesheet" href="style-2861.css" type="text/css" />
</head>
<body style="margin: 0px; padding: 0px;">
<div id="start" style="display: none;">
    <h1>Gratis SMS Versand wird gestartet...</h1>
    Dies ist ein <a href="/" title="free sms">Free SMS Versand</a> Service. Sie können hier bis zu 5 gratis SMS täglich ohne jegliches Abo oder sonstige Kosten versenden.
    <br /><br />
    <a href="https://www.smsgott.de/?id=2861&a=pq_f&track=false">Weiter...</a>
</div>
<div id="no_js">
    <h1>Free SMS Versand</h1>
    Bitte aktivieren Sie JavaScript, um SMS verschicken zu können. Eine kurze Anleitung, wie Sie JavaScript aktivieren, finden Sie <a href="https://jumk.de/javascript.html" target="_blank">hier</a>.
</div>
<script language="javascript">
<!-- 


document.getElementById("start").style.display = "block";
document.getElementById("no_js").style.display = "none";
location.href="https://www.smsgott.de/?id=2861&a=pq_f&track=false";



// -->
</script>
</body>
</html>
vielleicht ist das Problem, dass da versteckte Abschnitte sind, die nicht sichtbar gemacht werden?
is mir bloß leider grad etwas zu spät um darüber noch intensiver nachzudenken...
 
Zuletzt bearbeitet:
mit dem IE debugger kann ich js nicht richtig debuggen, ich kann den code nicht einzeln durchgehen, und somit nicht feststellen welche codes ausgeführt werden und welche nicht...

EDIT: lol ich glaub ich weiss nun den fehler, folgendes ist mir aufgefallen:

lösche mal:
HTML:
 <script type="text/javascript">
document.write('<br><a href="https://www.domain.com"><strong>domain.com</strong></a><br>');
</script>

und warum? ganz einfach, document.write hat einen nachteil. Am ende des scripts wird die gesamte seite überschrieben, und demnach wird der code nie ausgeführt, da er überschrieben wurde. Ich nehme an bei den Browsern ist ein Unterschied wann das passiert
 
Moin,

also daran liegt es auch nicht, ich hatte es ja vorher auch nicht drin.
Und es werden beide document.write angezeigt, wenn ich es nochmal reloaden lasse, drum würde ich behaupten, dass das Dokument beschrieben wird und nicht überschrieben.

:-?


MfG kbot
 
ändere mal das
location.href="https://www.smsgott.de/?id=2861&a=pq_f&track=false";
in
window.location.href="https://www.smsgott.de/?id=2861&a=pq_f&track=false";
 
kann ich leider nicht, da diese Sachen vom Skript kommen, welches eine andere Seite zur Verfügung stellt :(
 
uff...jez bin ich mit meinem Latein am ende... location.href ohne window. geht nämlich auch in IE, grad getestet. So langsam habe ich echt den verdacht dass IE einfach zu dumm ist für die Frames^^ kann echt nix finden...Versuche mal diese Seite (sms.html) im Popup oder so zu öffnen...
 
also ich denke, dass es mit dem Popup funktionieren müsste, da ja die sms.html direkt aufgerufen wird und das funktioniert ja, auch im IE

nur hab ich jetzt keine Zeit zum basteln, bin gleich für den ganzen Tag unterwegs
(ja, is blöd, ich werd versuchen weniger RL zu haben ;) )


MfG kbot