zu ladende frame aus Datei.js funktioniert nur eingeschränkt
Siggi
- javascript
Hallo,
ich stehe voll auf dem Schlauch.
Aus einer Maske (frame) heraus, die unterschiedlich ausgefüllt wird (per Datei.js) werden weitere Dateien entsprechend einer Auswahl aus dieser Maske heraus ("ort") geladen. Es wird jeweils eine Nummer "s" zugewiesen; die entsprechenden Dateinamen setzen sich aus Zahlen zusammen.
Intern, also alle Dateien auf meinem Rechner, funktioniert alles (IE, FF, Opera und Netscape) nach dem ich eine Verzögerung eingebaut habe. Bei einem Bekannten, für den das Ganze auch gemacht wurde, nicht mit dem IE, jedoch mit Einschränkungen FF.
Aus dem web (was ich natürlich auch versucht habe) nur mit Netscape.
diverse Abfragen ....
dann Aufruf der Datei:
}else{
var t = parent.s = parent.s + ort ;
var tElem = document.createElement('script');
tElem.type = 'text/javascript';
tElem.src = t + ".js";
document.getElementsByTagName('head')[0].appendChild(tElem);
window.setTimeout("seite()",200);
}
}
}
function seite(){
var formular= (kennung[0]['frame']);
// auslesen welche Maske geladen werden soll
alert ("Formular: "+formular+".htm");
/*Den alert habe ich mir zur vorübergehenden Kontrolle eingebaut.
Natürlich erscheint hier in den besagten fällen " undefined“
*/
location.href = formular +".htm"
}
Ich würde mich ungemein freuen, wenn mir hier einer weiterhelfen könnte.
Vielen dank für Eure Bemühungen
Siggi
Hi Siggi!
Nachdem du uns leider vorenthältst, wie (wann) kennung[0]['frame'] gesetzt wird, ist es nicht möglich, dir direkt weiter zu helfen.
Aus deiner Aussage folgernd vermute ich jedoch, dass die Sequenz vom Aufbau für kennung[0]['frame'] länger benötigt, als der Aufruf von function seite().
Viel Glück,
Richard
Hi Siggi!
Nachdem du uns leider vorenthältst, wie (wann) kennung[0]['frame'] gesetzt wird, ist es nicht möglich, dir direkt weiter zu helfen.
Aus deiner Aussage folgernd vermute ich jedoch, dass die Sequenz vom Aufbau für kennung[0]['frame'] länger benötigt, als der Aufruf von function seite().Viel Glück,
Richard
»»
Hallo Richard
Danke, das du dir mein Problem angesehen hast.
Zu Deiner Rückfrage:
Aus der Datei deren Name unter tElem.src = t + ".js" gebildet wird und deren Inhalt in den head geladen wird, wird der Name des aufzurufenden frames: "kennung[0]['frame']"ausgelesen (funktioniert ja intern auf meinem PC, aber nur auf meinem!)
Siggi
PS
Das Problem sehe ich übrigens auch so. Es kann sich nur um eine Zeitüberschneidung handeln. Aber mir fällt keine Lösung dazu ein.
Hi Siggi!
Naja, offensichtlich dauert es länger als 200 ms, bist die externe Javascript Datei im web geladen wurde.
Nun gibt es mehrere Möglichkeiten (hier zwei davon):
try chatch:
function doTry()
{
try{seite()}catch{document.setTimeout("doTry",200)}
}
rufe seite nicht aus der Datei auf:
(...)
}else{
(...)
window.setTimeout("seite()",200);
}
sondern stelle den Aufruf seite() an das Ende des externen Javascripts
Grüße,
Richard
Hi!
schlecht: try{seite()}catch{document.setTimeout("doTry",200)}
besser: try{seite()}catch{document.setTimeout("doTry()",200)}
Grüße,
Richard
Hi!
schlecht: try{seite()}catch{document.setTimeout("doTry",200)}
besser: try{seite()}catch{document.setTimeout("doTry()",200)}Grüße,
Richard
Ja, ja, die lieben Klammern, die man so gern vergisst. Danke
Siggi
Hi Richard!
function doTry()
{
try{seite()}catch{document.setTimeout("doTry",200)}
}
Der Ansatz try...catch gefällt mir. Dabei kann die 200 sogar noch reduziert werden. Ob nun ein Durchlauf im Hintergrund mehr oder weniger abläuft spielt ja keine Rolle.
Da heute bei mir nichts mehr läuft kann ich erst morgen antworten ob's hinhaut. Ich sehe aber keinen Grund, warum nicht.
Danke für den Tipp
Siggi