iFrame "miframe" null

Sancheck

Legendäres Mitglied
QUOTE
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function loadpage() {
miframe.src = "http://www.orf.at";
}
loadpage();
</script>
</head>
<FRAMESET rows="100%" columns="100%">
<FRAME id="miframe" name="miframe" >
</FRAMESET>
</html>



Leider ist miframe null, hat jemand eine Idee?
 
Ja, natürlich ist miframe so "null" - Die Variable(/Objekt) miframe wurde ja nirgens deklariert.

So müsste es klappen:
CODE function loadpage() {
var miframe = document.getElementById('miframe');
miframe.src = "http://www.orf.at";
}
 
Das Script wird ausgeführt bevor das Frame gerendert wurde bzw existiert.

Entweder du benutzt das onload Event zum ausführen des Scripts oder du setzt es direkt hinter das Frameset. Außerdem musst du dann noch den Ratschlag von Alonso beachten.
 
Es geht um folgendes Szenario:

Ich habe einen Kiosk, auf einem Bildschirm. Auf einer Website werden Inhalte neu geladen, wenn der Server abbricht, dann gibt es einen Fehler 404.

Nun mein Lösungsansatz:
1 Seite mit einem 100% Frame welche im Browser gecached sehr lange (http header) wird. Es wird dann laufend mit document.framenme.innerhtml alle 5 Sekunden ueberprueft, ob im jeweiligen Frame die Seite noch vorhanden ist , also innerhtml eine gewisse mindeststringlaenge hat.

Wenn nein: So wird per JS die url wieder aufgerufen.


Hab das nun eingebaut und funktioniert immer noch nicht :/ HTML und JS ist nicht meine Staerke:

QUOTE

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function loadpage() {
            var miframe = document.getElementById('miframe');
            miframe.src = "http://www.orf.at";
        }</script>
</head>
<FRAMESET  rows="100%" columns="100%">
      <FRAME id="miframe" name="miframe" >
  </FRAMESET>
    <script type="text/javascript">
        loadpage();
</script>
</html>

 
CODE <iframe name="miframe" id="miframe"></iframe>
<script type="text/javascript">
loadpage();
</script>
 
Sry, falsche Betitelung. Iframe wollte ich nicht verwendent, weil der nicht hundert prozent bis zum rand geht, zumindest im Google Chrome.
 
Zu deinem Lösungsansatz:
Ich würde das über Ajax (XMLHttpRequest) lösen, und den Content nur aktualisieren wenn der Result Code = 200 ist - ansonsten bleibt die alte "Seite" angezeigt. So kommt es gar nicht dazu dass ein 404 in den Clients dargestellt wird.

Schau dir sonst mal den PeriodicalUpdater von Prototype an - der ist eigentlich genau für sowas gedacht.
 
Hallo alonso,
dein Ansatz ist prinzipiell absolut richtig. Ich kann das leider in dem Fall nicht machen, da die seite um die es geht, eine fertige asp.net komponente ist. Und auf die kann ich nicht zugreifen. Deswegen muss ich das extern machen,deswegen mein Frame mit dem abbruefen von aussen,...aber der klappt leider nicht...also im step 1 will ich mal nur, dass die seite in einem frame per JS geladen wird,..

Grüsse,
 
bei dir ist das frameset schon nicht korrekt. ich würde bei selfhtml.org mal starten und dann mit 3 dateien arbeiten:

das frameset:
CODE

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title></title>
</head>
<frameset rows="100%,*"">
<frame src="oben.html" name="oben" frameborder=0>
<frame src="unten.html" name="unten"" frameborder=0>
</frameset>
<noframes>
</noframes>
</html>



die steuerdatei "unten.html":

CODE <html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script type="text/javascript">
function loadpage(URI) {
parent["oben"].location.href = URI;
}
loadpage("http://www.orf.at");
</script>
<body bgcolor="#FFFFFF" text="#000000">

</body>
</html>



der platzhalter "oben.html":

CODE <html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
hier ist nix
</body>
</html>



von hier aus kannst du dich dann weiterhangeln.

 
Vielen Dank. So habe ich das ganze nun bereits umgesetzt. Schade dass Framesets nicht direkt JS verwenden können.
 
Zurück
Oben