Author Topic: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)  (Read 10120 times)

0 Members and 1 Guest are viewing this topic.

Offline darkkurt

  • Pre-Newbie
  • Posts: 3
    • View Profile
    • dark-kurt.de
Hallo zusammen!

Die Frage, wie man *.html - Dateien in die Galerie einfügen kann, ist ja schon hinreichend geklärt worden. Ich möchte der Lösung noch einen kleinen Bonus hinzufügen:

Wer mehrere verschiedene *.html-Dateien einfügen will, steht früher oder später vor dem Problem, dass die im "media"-Template angegebene Größe des iframes nicht ausreicht oder zu groß ist. Das führt entweder zu imens viel Leere auf der Detail-Seite, oder zu unschönen Scrollbalken.

Mit folgenden Modifikationen lässt sich das Problem per Javascript elegant umschiffen:

1. In die "header"-Datei kommt folgender Javascript-Schnipsel:

Code: [Select]
<script type="text/javascript"> function resize_iframe() {
self.document.getElementById('inhalt').style.height = document.getElementById('text').offsetHeight;
}
</script>

2. Die "media"-Datei wirkt wie folgt verändert:

Code: [Select]
<!-- Template file for html Files -->
<IFRAME onload="resize_iframe();" id="inhalt" src="{media_src}" width="600" scrolling="no" frameborder="0" marginheight="2" marginwidth="2">
</IFRAME>

3. Die im iframe auszugebende *.html-Datei sollte dann so aussehen (exemplarisch):

Code: [Select]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1">
<script type="text/javascript"> function resize_iframe() {
parent.document.getElementById('inhalt').style.height = document.getElementById('text').offsetHeight;
}
</script>
<TITLE>titel</TITLE>
</HEAD>
<BODY onload="resize_iframe();">
<DIV id="text">
<!-- Inhalte --> 
</DIV> 
</BODY>
</HTML>

Wichtig ist hier vor allem das "body onload"-Atribut und der "Div" um den Inhalt.

Diese Lösung funktioniert mit den Browsern IE 7, Firefox 2.x und Opera 9.25
 


Hello everybody!

I think, the question, "how can I include *.html-files is answered. I just want to add a small bonus:

If you want to include more Files with different heights, you'll find the Problem, that the height-atribute of the iframe is to big or to small. This leads to big parts leaved blank or ugly scrollbars.

Use the following modifikation  to solve this problem whit javascript:

1. Add the following javascript to the "header"-File:

Code: [Select]
<script type="text/javascript"> function resize_iframe() {
self.document.getElementById('inhalt').style.height = document.getElementById('text').offsetHeight;
}
</script>

2. change the "media"-Template for *.html-Files like this:

Code: [Select]
<!-- Template file for html Files -->
<IFRAME onload="resize_iframe();" id="inhalt" src="{media_src}" width="600" scrolling="no" frameborder="0" marginheight="2" marginwidth="2">
</IFRAME>

3. The "*.html"-File that you want to inculde in the Iframe, should look like this (for example):

Code: [Select]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1">
<script type="text/javascript"> function resize_iframe() {
parent.document.getElementById('inhalt').style.height = document.getElementById('text').offsetHeight;
}
</script>
<TITLE>titel</TITLE>
</HEAD>
<BODY onload="resize_iframe();">
<DIV id="text">
<!-- content --> 
</DIV> 
</BODY>
</HTML>

Important are the "body onload"- atribute and the "div" for the content

This conclusion ist tested with IE7, Firefox 2.x and Opera 9.25

Please forgive me my terrible english...  :oops:

Offline honda2000

  • 4images Guru
  • *******
  • Posts: 3.263
    • View Profile
    • Wir machen Internet!
Re: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)
« Reply #1 on: February 24, 2008, 05:54:41 PM »
nicht schlecht die Idee, hat nur einen nachteil
das HTML ist nicht mehr valid, denn du rufst lange nach dem Header mitten in der Seite einen iFrame wieder mit
Quote
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1">
<script type="text/javascript"> function resize_iframe() {
parent.document.getElementById('inhalt').style.height = document.getElementById('text').offsetHeight;
}
</script>
<TITLE>titel</TITLE>
</HEAD>
<BODY onload="resize_iframe();">

<!-- Inhalte --> 
</DIV> 
</BODY>
</HTML>

auf, damit hast du 2 Header, 2 Bodys, zwei Titel

warum rufst du es nicht mit einer .htaccess auf??

siehe: http://www.4homepages.de/forum/index.php?topic=19882.0

Offline darkkurt

  • Pre-Newbie
  • Posts: 3
    • View Profile
    • dark-kurt.de
Re: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)
« Reply #2 on: February 24, 2008, 09:23:08 PM »
warum rufst du es nicht mit einer .htaccess auf??

siehe: http://www.4homepages.de/forum/index.php?topic=19882.0

8O *pffft*

ich bin froh, dass ich es per JS hingekriegt habe. :wink: Mir fehlt ehrlich gesagt das nötige Wissen, um die .htaccess-Lösung zu realisieren - ich will mir nichts zerschießen.

Offline honda2000

  • 4images Guru
  • *******
  • Posts: 3.263
    • View Profile
    • Wir machen Internet!
Re: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)
« Reply #3 on: February 25, 2008, 07:51:50 AM »
bei der .htaccess hat man das Problem der Höhe, die ist nicht variabel

bei JavaScript das Problem: es ist ein sichtbarer iFrame und zweitens, wer JavaScript aus Sicherheitsgründen deaktiviert, sieht keine Galerie

rinaldos

  • Guest
Re: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)
« Reply #4 on: February 25, 2008, 09:51:37 AM »
Hi,
ich habe das bei mir so gelöst.

In der HTML Datei, wo ich das IFrame anlege sieht es so aus:

Achtung ich nutze den MOD Universal Layout
http://www.4homepages.de/forum/index.php?topic=18926.0

Code: [Select]
{header}
{ste_layout_top}
<noscript><br /><span style="color:red;font-weight:bold;">Um alle
Funktionen dieser Seite richtig nutzen zu koennen, muss Javascript in
Deinem Browser aktiviert sein!<br /><br /></span></noscript>
<script type="text/javascript" src="js/resizeme.js"></script>
<table width="100%" height="100%" border="0" align="center" cellspacing="0" cellpadding="0">
      <td width="100%" height="100%" valign="top">
<IFRAME onload="javascript:parent.resize_me('content');" SRC="/blog/index.html" name="content" id="content" HEIGHT="1000" style="width:100%;" border="0" frameborder="0" scrolling="no"></IFRAME>
      </td>
     </tr>
    </table>
   </td>
  </tr>
</table>
</div>
{footer}

Das Java script in /js/resizeme.js
Code: [Select]
function resize_me(n)
{
    d=0;
ifObj=document.getElementsByName(n)[0];
p=(document.all)?'scroll':'offset';
      eval("ifObj.style.height=window.frames[n].document.getElementsByTagName('body')[0]."+p+"Height+"+d);
}


Auch wenn oben die Höhe mit 1000 angegeben ist, wird es doch irgendwie angepasst. Man sieht es ganz schön in den unterschiedlichen Links, denn ich habe nur den Pfad geändert..... Funktioniert bei mir mit IE, FF, Safari 3

Im Vergleich

http://rinaldos.homeip.net/blog.html
http://rinaldos.homeip.net/reiseberichte.html
http://rinaldos.homeip.net/anleitungen.html

Gruß
Ingo


Offline SprinterMadl

  • Newbie
  • *
  • Posts: 38
    • View Profile
    • Sprintermadl´s OnlineSite
Re: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)
« Reply #5 on: February 25, 2008, 10:20:41 AM »
Hallo Rinaldos,

hast Du in Deinen Header nicht noch irgendwo nen Skript versteckt für das OnLoad?
Hätte an so einer Funktion auch großes Interesse nur hat bis jetzt nichts funktioniert.
Gruß SprinterMadl


rinaldos

  • Guest
Re: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)
« Reply #6 on: February 25, 2008, 10:37:28 AM »
Vielleicht hat er den Pfad zum Java Script nicht gefunden, dann einfach den absoluten Pfad angeben

Code: [Select]
<script type="text/javascript" src="js/resizeme.js"></script>ändern in

Code: [Select]
<script type="text/javascript" src="http://deine webseite/js/resizeme.js"></script>
oder
Code: [Select]
<script type="text/javascript" src="/js/resizeme.js"></script>
Ich habe keinen weiteren onload im header :-)

Hier meine header.html
Code: [Select]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="{direction}">
<head>
<title>{site_name}</title>
{redirect}
<meta http-equiv="content-type" content="text/html; charset={charset}" />
<meta name="language" content="german,deutsch,DE,AT,CH,S">
<META name="ROBOTS" content="index,follow">
<meta name="author" content= "Ingo Randel">
<meta name="publisher" content= "Ingo Randel">
<meta name="copyright" content= "Ingo Randel">
<meta name="verify-v1" content="QvuMYW1EBXrA4MUv1zPXwTYDVGQuOI/w5tACr/pqXzM=" />
{css_starratings}
<link rel="stylesheet" href="{template_url}/dark.css" />

<script language="javascript" type="text/javascript">
<!--

  var captcha_reload_count = 0;
var captcha_image_url = "{url_captcha_image}";
  function new_captcha_image() {
    if (captcha_image_url.indexOf('?') == -1) {
  document.getElementById('captcha_image').src= captcha_image_url+'?c='+captcha_reload_count;
} else {
  document.getElementById('captcha_image').src= captcha_image_url+'&c='+captcha_reload_count;
}

    document.getElementById('captcha_input').value="";
    document.getElementById('captcha_input').focus();
    captcha_reload_count++;
  }

function opendetailwindow() {
    window.open('','detailwindow','toolbar=yes,directories=no,menubar=yes,scrollbars=yes,resizable=yes,width=680,height=480');
  }

  function right(e) {
    if ((document.layers || (document.getElementById && !document.all)) && (e.which == 2 || e.which == 3)) {
      alert("© Copyright by {site_name}");
      return false;
    }
    else if (event.button == 2 || event.button == 3) {
      alert("© Copyright by {site_name}");
      return false;
    }
    return true;
  }

  if (document.layers){
    document.captureEvents(Event.MOUSEDOWN);
    document.onmousedown = right;
  }
  else if (document.all && !document.getElementById){
    document.onmousedown = right;
  }

document.oncontextmenu = new Function("alert('© Copyright by {site_name}');return false");

// -->
</script>
<script language="javascript">
<!--

function reset() {
document.tellafriend.name.value="";
document.tellafriend.email.value="";
document.tellafriend.friendmail1.value="";
document.tellafriend.friendmail2.value="";
document.tellafriend.friendmail3.value="";
}

function validate() {


if (document.tellafriend.friendmail1.value.length==0) {
alert("please enter your friend's email address");
return false;
}

if (document.tellafriend.email.value.length==0) {
alert("please enter your email address");
return false;
}
if (document.tellafriend.name.value.length==0) {
alert("please enter your name");
return false;
}

document.tellafriend.submit()
return true;
}

//-->
</script>

{if has_rss}
<link rel="alternate" type="application/rss+xml" title="{rss_title}" href="{rss_url}" />
{endif has_rss}
</head>
Gruß
Ingo


Offline SprinterMadl

  • Newbie
  • *
  • Posts: 38
    • View Profile
    • Sprintermadl´s OnlineSite
Re: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)
« Reply #7 on: February 25, 2008, 10:43:30 AM »
Da die Seite selber jetzt nicht online ist, aber die Seite im iFrame bin ich auch schon auf die Idee mit dem absoluten Pfad gekommen.
Hat aber nix gebracht, werd jetzt aber mal die Seite auf den Server legen, vielleicht liegts ja da dran.

Danke erstmal

[Tante EDIT]

Ey, super genial, endlich etwas das wirklich funktioniert  :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Gruß SprinterMadl


Offline darkkurt

  • Pre-Newbie
  • Posts: 3
    • View Profile
    • dark-kurt.de
Re: Variable iframe-heights/variabele iframe-Höhen (html-Dateien einfügen)
« Reply #8 on: February 25, 2008, 05:07:37 PM »

bei JavaScript das Problem: es ist ein sichtbarer iFrame
äh... nö  8)
Quote
zweitens, wer JavaScript aus Sicherheitsgründen deaktiviert, sieht keine Galerie

Gut, das Problem hat man, aber erfahrungsgemäß haben die meisten "Normalsurfer" Javascript an - und eine Noscript-Variante kann man ja zusätzlich realisieren. dann hat man halt Scrollbalken.

Offline SprinterMadl

  • Newbie
  • *
  • Posts: 38
    • View Profile
    • Sprintermadl´s OnlineSite
Da die Seite selber jetzt nicht online ist, aber die Seite im iFrame bin ich auch schon auf die Idee mit dem absoluten Pfad gekommen.
Hat aber nix gebracht, werd jetzt aber mal die Seite auf den Server legen, vielleicht liegts ja da dran.

Danke erstmal

[Tante EDIT]

Ey, super genial, endlich etwas das wirklich funktioniert  :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

So, hab jetzt nun die Galerie "richtig" online und hab jetzt das Problem das wenn man die Seite mit http://www.sprintermadl.de.vu aufruft, das Ganze nicht funktioniert.
Ruf ich das Ganze über http://sprintermadl.sp.funpic.org/Bilderpage/galerie.html auf funktioniert es.
Außerdem hab ich noch das Forum und mein Gästebuch mit dem <skript> ausgestattet Forum hat es funktioniert aber nicht beim Gästebuch  :? :?
Gruß SprinterMadl


Offline honda2000

  • 4images Guru
  • *******
  • Posts: 3.263
    • View Profile
    • Wir machen Internet!
sichtbar ist es in beiden, nur!!!

Quote
<IFRAME onload="javascript:parent.resize_me('content');" SRC="http://sprintermadl.sp.funpic.org/photos/" name="content" id="content" HEIGHT="830" style="width:100%;"

erhöhe:
height="950" und style="width="100%" ist quatsch, entweder: width="750" oder: style="width: 750px;"

Offline SprinterMadl

  • Newbie
  • *
  • Posts: 38
    • View Profile
    • Sprintermadl´s OnlineSite
Als quatsch würde ich das nicht bezeichnen, Tabellen kann man ja auch in % angeben, ich verwende den FireFox und der kommt damit gut klar nur der Internet Explorer nicht.
Gruß SprinterMadl


Offline honda2000

  • 4images Guru
  • *******
  • Posts: 3.263
    • View Profile
    • Wir machen Internet!
das ist doch quatsch, den eine angabe % ist käse, was ist %???

100% eines iFrame sind definiert mit glaub 240pixel

und w3valid isses schon gar nicht

..und dann kommt das dazu, was du sagst: unterschiedliche Browser, also macht man es, wenn dann richtig: mit css-tyle für alle Browser gleich

eine Tabelle ist okay, mit %, aber alles andere, Bilder, Iframe,... ist quatsch