# I-Frame automatisch Höhe anpassen



## Ec16 (6. Mai 2013)

Hallo,

also ich habe folgendes Problem und das ganze Wochenende mal nach einer Lösung gesucht.
Leider bin ich hier und mit Hilfe von Google nicht fündig geworden.

Und zwar möchte ich gerne eine Seite von mir, meinen Usern anbieten das sie diese z.B. in ihre Homepage einbinden können. Per PHP würde das auch gehen nur bei einigen Usern verbieten es die Anbieter.

Jetzt dachte ich mir das man vielleicht das ganze mit IFrame machen könnte.
Funktioniert soweit auch nur jetzt möchte ich und die User es aber so haben das sich die Höhe des IFrames automatisch anpasst.
Also z.B. bei kurzen Text unterhalb den leeren Abstand entfernen und bei langen Text neben die Scrollbar entfernen und die Seite verlängern.

Google hat mir auch genügend Beispiele gegeben nur hat bis jetzt keines davon funktioniert.

Kann mir dabei hier vielleicht jemand helfen?

Wie gesagt, den Inhalt der Quelldatei ist meiner und diesen kann ich ggf. auch erweitern wenn dem so sei wie in einigen JavaScript Beispielen die nicht funktioniert hatten.

Dnake


----------



## Parantatatam (6. Mai 2013)

Ich würde dir empfehlen, dass du ein JavaScript-Skript schreibst, welches deine Nutzer dann direkt von deiner Seite aus einbinden. Denn anders geht es nicht (Stichwort: Same Origin Policy). Somit hast du auch die Möglichkeit zu überwachen, ob dein iFrame angepasst werden muss oder nicht. Sinnvoller Weise wäre es sogar gut, wenn deine Nutzer die SCRIPT-Tags an die Stelle setzen würden, an der dein iFrame angezeigt werden soll. Somit ersparen sie sich, dass sie an zwei Stellen fremden Quelltext einfügen müssen.

Nachtrag: Was mir gerade dazu noch eingefallen ist: wenn du es so löst, brauchst du nicht einmal mehr iFrames, sondern du fügst den Inhalt entweder per AJAX ein, oder du definierst ihn fest in deinem Skript.

Nachtrag II: Das müsste dann etwa wie folgt aussehen:

```
<!-- Seite deines Nutzers -->
<body>
  <!-- andere Elemente -->
  <script type="text/javascript" src="http://deine-seite.net/insert.php?{content_id}"></script>
  <!-- weitere Elemente -->
</body>
```


```
/* Skript, welches auf deinem Server generiert wird */
$(function () {
  var $el  = $('body > script[src="http://deine-seite.net/insert.php?{content_id}"]');
  var $div = $('<div></div>').html('Inhalt, der eingefügt werden soll (vermutlich aus einer Datenbank).');
  $div.insertAfter($el);
});
```
Und danach sieht der Quelltext auf der Seite deines Nutzers wie folgt aus:

```
<body>
  <script type="text/javascript" src="http://deine-seite.net/insert.php?{content_id}"></script>
  <div>Inhalt, der eingefügt werden soll (vermutlich aus einer Datenbank).</div>
</body>
```


----------



## Parantatatam (6. Mai 2013)

Da ich davon ausgehe, dass du nicht nur einen Text/Inhalt/was auch immer hast, denn du anzeigen lassen willst, sondern bestimmt auch Inhalte hast, die sich von Nutzer zu Nutzer unterscheiden, oder in anderer Weise (beispielsweise bei Liedtexten unterschiedliche Liedtexte), ist die content_id, die du an dieser Stelle einsetzen sollst, die Kennung dafür, welchen Inhalt das Skript dir liefern soll.


----------



## Parantatatam (7. Mai 2013)

Also du musst es letztendlich so haben:

```
echo 'var $div = $("div").html("' . $content . '");';
```


----------



## Parantatatam (7. Mai 2013)

Wenn du möchtest, dann schickst du mir dein Skript und ich passe es dir entsprechend an.


----------



## djheke (7. Mai 2013)

Äh, muss es nicht mit document.write ausgegeben werden?
Beispiel:http://www.gipspferd.de/forumhilfe/inhalte-einbinden-lassen/


```
<script src="einbinden.php" type="text/javascript"></script>
```


```
<?php
 $seite = file_get_contents("http://www.gipspferd.de");
 $ausgabe = str_replace("\n","",$seite);
 preg_match("#<h1>(.*?)</h1>#s",$ausgabe, $body); 

?>
document.write('<?php echo $body[0];?>');
```


----------



## Parantatatam (7. Mai 2013)

@djtheke: Nein, muss es nicht. Außerdem sollte man document.write() wo es möglich ist, vermeiden, da es sehr unsauber ist. Abgesehen davon, möchte er ja seinen Inhalt an einer ganz bestimmten Stelle haben, und das ist besser mit meiner Variante zu lösen.


----------



## djheke (7. Mai 2013)

@einfach nur crack: Na da bin ja wieder ein bissel schlauer. Danke. Werd ich mal ausprobieren. Denn mit document.write dürfen ja keine Zeilenumbrüche vorhanden sein, wass sehr nervt.


----------

