Browserproblem (Mozilla) bei innerHtml
turbotoaster
- javascript
Ich hab meine Homepage im Moment auf einer html-css-javascript Basis erbaut, in der im index.html beim Klick auf ein Menubutton ein internes (Div-)Fenster mit dem jeweiligen Inhalt geladen wird.
Zur Vermeidung von zu langen Ladezeiten werden befinden sich die jeweiligen Inhalte in externen hmtl-Dateien, die dann über ein Iframe aufgerufen werden.
Das Problem: Mein Mozilla (3.5.3) lädt die Inhalte der Iframes beim Aufrufen nicht (ein grauer Hintergrund erscheint). Erst bei mehrfachem Aufrufen und Neuladen wird Inhalt gezeigt. Im IE und GoogleChrome klappt alles wunderbar.
Ist ein Browserproblem oder findet ihr vll. einen Fehler im Script?
Script:
function fenster (id) {
appear(id+'div');
document.all[id+'content'].innerHTML = "<iframe src='"+id+".html' width='100%' height='100%' frameborder='0' border='0'></iframe>";
}
function appear (id) {
document.getElementById(id).style.visibility = 'visible';
}
Zur Erklärung: Es gibt z.B. die Div-Boxen mit den Ids "homediv" und "homeconntent". "homediv" wird angezeigt und in "homecontent" wird das Iframe "home.html" geladen.
Danke schon mal im Voraus.
turbotoaster
Ist ein Browserproblem
Mozilla kennt all nicht, wohl aber innerHTML!
Script:
function fenster (id) {
appear(id+'div');
document.all[id+'content'].innerHTML = "<iframe src='"+id+".html' width='100%' height='100%' frameborder='0' border='0'></iframe>";
verwende hier einfach document.getElementById(id+'content').innerHTML
Ist ein Browserproblem
Mozilla kennt all nicht, wohl aber innerHTML!
Dann frag ich mich, wieso eine frühere Version von Mozilla, welche bei uns in der Schule auf den Rechnern läuft, diesen Befehl dennoch verarbeiten kann.
Ich such deshalb nach einer Lösung, die auf möglichst allen gängigen Browsern läuft.
Ist das mit "innerHtml" statt "all" zu bewältigen, oder muss ich auf andere methoden zurüchgreifen?
turbotoaster
Hallo!
Mozilla kennt all nicht, wohl aber innerHTML!
Dann frag ich mich, wieso eine frühere Version von Mozilla, welche bei uns in der Schule auf den Rechnern läuft, diesen Befehl dennoch verarbeiten kann.
Das frag ich mich auch, denn "all" ist ein proprietäres MS-Objekt im IE.
Ich such deshalb nach einer Lösung, die auf möglichst allen gängigen Browsern läuft.
Die wurde dir doch genannt, verwende ausschließlich DOM - Methoden findest Du hier.
Danke für die schnellen antworten. Es hat sich geklärt!
Ist das mit "innerHtml" statt "all" zu bewältigen, oder muss ich auf andere methoden zurüchgreifen?
ich meinte natürlich "document.getElementByid().innerHtml.
Also die Frage neu formuliert: Ist innerHtml die beste Möglichkeit zu bewältigen, was ich will, oder sollte man das anders lösen.
danke, turbottoaster
Ist ein Browserproblem oder findet ihr vll. einen Fehler im Script?
warum guckst du nicht selber nach? Du kennst die Fehlerkonsole?
Struppi.
Hi,
document.all[id+'content'].innerHTML = "<iframe src='"+id+".html' width='100%' height='100%' frameborder='0' border='0'></iframe>";
Du bist Dir darüber im Klaren, dass es haufenweise Gründe gegen eine solche Lösung gibt? Dabei ist die Javascript-Abhängigkeit imho noch der Geringste. KO-Kriterium wäre für mich jedoch, dass keine Suchmaschine diese Inhalte je indizieren wird. Ausserdem - wenn Du schon mit Javascript rumdokterst, warum dann diese unhandliche iframe-Lösung mit allem, was gegen Frames spricht (siehe Archiv)? Dann kannst Du die Daten doch gleich per Ajax holen und direkt in das Div schreiben.
Ach ja, die fehlerhafte - resp. proprietäre - Referenzierung wurde ja bereits erwähnt, dokument.all gehört schon lange in die Mottenkiste...
Gruesse, Joachim