Seite 2 von 2

Verfasst: 16.07.2003 10:34
von Helmut
Hallo Helmut71,

wie meinst du das genau, so wie ich das gelöst habe?
leider haben wir es noch nciht geschafft, dass sich die Größe ändert:
Bei mir ist da schon noch etwas mehr Aufwand dahinter, denn die Größe des iframe wird über die html Seite gesteuert. Das funktioniert etwa so: Zuerst wird ein iframe in einer bestimmten Größe erzeugt, dann der Inhalt der html Seite geladen, somit bekomme ich die Länge der Seite und dann wird das iframe in der Länge angepasst. Das war nicht leicht zu lösen, da ich die Länge ja nicht direkt bekomme. Das ging nur mit einem Trick und zwar mit einem div Tag der am Anfang und Ende der Seite (Body) eingefügt wird und sonst nirgens im Code vorkommt.
<div id="siFrameEndID"></div>
Hier einmal einen Teil einer html Seite:

Code: Alles auswählen

<html>
<head>
<title>Selbsthilfeverband Inkontinenz e.V. Bettnässen bei Kindern und Erwachsenen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="expires" content="-1">
<meta name="description" content="Die Gr&ouml;&szlig;te Selbsthilfeseite zum Thema Inkontinenz im Internet">
<meta name="robots" content="index,follow">
<meta name="author" content="Dennis Schubert SVI">
<meta name="Content-Language" Content="de">
<meta name="keywords" content="Inkontinenz, inkontinenz">
<meta name="date" content="2003-01-10T20:00:00+01:00">
<meta name="revisit-after" content="2 days">
</head>
<body class="bodyline" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div id="siFrameID">
<!-- Funktions -->
<link rel="stylesheet" href="../../../templates/subSilver/subSilver.css" type="text/css">
<div id="navtxt" class="navtext" style="visibility:hidden;position:absolute;width:235px;top:0px;left:-400px;z-index:10000;padding:0px"></div>
<script src="../../../templates/funktions.js" language="javascript" type="text/javascript"></script>
<!-- Funktions -->
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<!-- bis hier code unverändert lassen -->

<!-- Header begin//-->
 <tr><td height="27" align="center" class="rowpic"> 
      <b>Bettnässen bei Kindern und Erwachsenen</b>
 </td></tr><tr><td> 
<!-- Header end//--> 

<!-- ab hier code unverändert lassen //-->
<table border="0" class="forumline" align="center" cellpadding="2" cellspacing="1" width="100%">
<tr><td class="row1">&nbsp;</td></tr>
<!-- eine neue Seite besteht mindestens aus dem Code bis hier //-->

Hier steht der Seitentext


<script language="javascript" type="text/javascript">
//logging and go to root if not framed
<!--
document.write("<img src=\"http://www.selbsthilfeverband-inkontinenz.org/cgi-bin/log.pl?ref="+top.document.referrer+"\" width=1 height=1 border=0>");
frame=(parent.frames['iFrame1']) ? true : false
if (!frame){
document.location.href='http://www.selbsthilfeverband-inkontinenz.org/svi_suite/bettnaessen.php';
}
//-->
</script>
  </td>
</tr>
<!-- one row end//--> 

<!-- ab hier code unverändert lassen //-->
	</table>
      </td>
  </tr>
</table>
</div><div id="siFrameEndID"></div>
</body>
</html>
<!-- bis hier code unverändert lassen //-->
Dazu kommt noch eine Java Datei die die Steuerung übernimmt. Den Aufwand mußt nur treiben, wenn du unterschiedlich lange Seiten im selben iframe darstellen willst, sonst kannst du eine feste Länge vorgeben.

Aber wie das genau geht, das kann ich dir nicht sagen, da ich diesen Teil der Programmierung nicht selber gemacht habe. Ich habe nur die gesammte Einrichtung der Grundstruktur vom Forum gemacht und alle Seitentexte geschrieben.

Gruß Helmut

Verfasst: 16.07.2003 11:03
von Helmut71
Wir haben folgendes versucht:

Eine Probe-Portalseite unter


http://www.hohenau.net/forum/H_portal.php

Versucht haben wir es mit dem ersten Link: Gemeindeamt

Die Inhalte sollen im iframe in der Mitte angezeigt werden..

So sieht der iframe aus:

Code: Alles auswählen

<!-- Tabelle Inhalt -->

	<table width="97%" cellspacing="1" cellpadding="1" border="0" align="center"><tr><td>
		<table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline">
		<tr>
		<td><iframe name="mitte" width="100%" border="0" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" src="http://www.hohenau.net/forum/templates/subSilver/main.tpl"></iframe></td>
		</tr> 
		</table>
	  </td>
	</table>
<!-- ENDE Tabelle Inhalt -->
Wobei der Iframe je nach Größe der Inhaltsdateien variabel sein sollte..

näheres weiß Andreas.

Verfasst: 16.07.2003 11:27
von Helmut
Hallo Helmut71,

na schaut doch schon mal nicht schlecht aus. Füge mal das hier (blauer Text) ein, dann müsste der Inhalt in der Mitte sein, sonst müßtest das in der "main.tpl" machen.
<!-- Tabelle Inhalt -->

<table width="97%" cellspacing="1" cellpadding="1" border="0" align="center"><tr><td>
<table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline">
<tr>
<td><iframe align="center" name="mitte" width="100%" border="0" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" src="http://www.hohenau.net/forum/templates/ ... frame></td>
</tr>
</table>
</td>
</table>
<!-- ENDE Tabelle Inhalt -->
Gruß Helmut

Verfasst: 16.07.2003 11:52
von Helmut71
hab ich gemacht.

Einen Tipp für die variable Höhe?

Verfasst: 16.07.2003 12:52
von Helmut
Hallo Helmut71,

das hier ist die Codesequenz für die Steuerung der iframe höhe (Javascript) aus der functions.js von uns:

Code: Alles auswählen

.......
.......
.......
///////////////////////////////////////////////write iFrame 
var ifheigh='';
var inputurl='';
var displaymode=0;
function jumpto(inputurl){
if (document.getElementById&&displaymode==0){
document.getElementById("external").src=inputurl;
}
else if (document.all&&displaymode==0){
document.all.external.src=inputurl;
}
else{
if (!window.win2||win2.closed)
win2=window.open(inputurl)
else{
win2.location=inputurl
win2.focus()
}}}
function setheigh(ifheigh){
if (document.getElementById&&displaymode==0){
document.getElementById("external").style.height=ifheigh;
}
else if (document.all&&displaymode==0){
document.all.external.style.height=ifheigh;
}}


/// end write IFrame
///////////////////////////////////////////////rewrite of Iframecode
var iframe_heigh;
var inputurl;
var frameid='iFrame1';
var timer=0


function jumptourl(inputurl){
document.getElementById(frameid).src=inputurl;
document.getElementById('bug').innerHTML= '&nbsp;';
getframe = window.setInterval('getready()',1000);
}

function getready(){
if (dw3c && ie4up){
//Code here for the IE
readyframe=document.frames[frameid].document.readyState;
divready=(document.frames[frameid].document.getElementById('siFrameID')) ? true:false;
if (readyframe == "complete"){
if (!divready){
document.getElementById('bug').innerHTML= '<b>Fataler Fehler:</b> siFrameID wurde nicht geladen</b>';
window.clearInterval(getframe);
return
}else{
// if IE document loaded go on -->>
timer=0;
window.clearInterval(getframe);
iframe_heigh=document.frames[frameid].document.getElementById('siFrameID').offsetHeight+2;
document.getElementById(frameid).style.height=iframe_heigh;
window.document.title=frames[frameid].document.title;
}
//here returns IE until readyframe !="complete" set a timeout if never complete
timer++
if(timer >= 180){
timer=0;
window.clearInterval(getframe);
return
}}}else if (dw3c && !ie4up){
//Code here for DOM, i have no ideas to get real document status :-(((
divready=(frames[frameid].document.getElementById('siFrameID')) ? true:false;
readyframe=(frames[frameid].document.getElementById('siFrameEndID')) ? true:false;
if (readyframe && divready){
if (!divready){
document.getElementById('bug').innerHTML= '<b>Fataler Fehler:</b> siFrameID <b>nicht</b> geladen</b>';
window.clearInterval(getframe);
return
}else{
// if DOM document loaded(not realy) go on -->>
timer=0;
window.clearInterval(getframe);
iframe_heigh=frames[frameid].document.getElementById('siFrameID').offsetHeight+10;
document.getElementById(frameid).style.height=iframe_heigh;
window.document.title=frames[frameid].document.title;
}}
//here returns DOM until readyframe !="complete" set timeout if never complete
timer++
if(timer >= 180){
timer=0;
window.clearInterval(getframe);
return;
}}}

// Debuging code set div tag´s 
//  document.getElementById('bug').innerHTML= 'Geladen ist: '+frames['iFrame1'].document.title;
//  document.getElementById('bug1').innerHTML= 'IFrame Div Id: siFrameID geladen';
//  document.getElementById('bug2').innerHTML= 'IFrame Div Id: siFrameEndID geladen';
//  document.getElementById('bug3').innerHTML='IFrame.Document hoehe: '+ iframe_heigh;
//
// to create an new iframepage -->>
//  set var frameid to the iframename
//  set this Divtags in the framedocument:
//  next <body....> <div id="siFrameID">
//  and before the body ends </div><div id="siFrameEndID"></div>
///end Iframecode

Der Code ist halt speziell für unsere HP ausgelegt, du mußt ihn eventuell noch anpassen. Übrigens verhalten sich der Netscape und der IE unterschiedlich bei der Abarbeitung des iframe, da haben wir lange eine Lösung gesucht und nur einen Kompromiss gefunden. Manchmal kann es vorkommen, daß der Netscape die Länge des iframe nicht richtig einstellt und die letzten Leerzeilen am Seitenende abschneidet. Hier haben wir bis jetzt noch keine Ursache dafür gefunden.

Gruß Helmut

Verfasst: 16.07.2003 13:37
von Helmut71
danke für die ausführliche Antwort, auch wenn ich nicht schlau daraus werde ;-)

Noch eine Frage: Ginge es theoretisch nicht auch mit dem include-Befehl, dass man über Links in den Navigations-Tabellen jeweils andere Inhalte in der Mitte in der Haupttabelle anzeigen lässt?

Wenn ja, wie müsste der include-Befehl eingebaut werden?